Lines Matching refs:req
270 struct p9_req_t *req = kmem_cache_alloc(p9_req_cache, GFP_NOFS); in p9_tag_alloc() local
274 if (!req) in p9_tag_alloc()
277 if (p9_fcall_init(c, &req->tc, alloc_msize)) in p9_tag_alloc()
279 if (p9_fcall_init(c, &req->rc, alloc_msize)) in p9_tag_alloc()
282 p9pdu_reset(&req->tc); in p9_tag_alloc()
283 p9pdu_reset(&req->rc); in p9_tag_alloc()
284 req->t_err = 0; in p9_tag_alloc()
285 req->status = REQ_STATUS_ALLOC; in p9_tag_alloc()
286 init_waitqueue_head(&req->wq); in p9_tag_alloc()
287 INIT_LIST_HEAD(&req->req_list); in p9_tag_alloc()
292 tag = idr_alloc(&c->reqs, req, P9_NOTAG, P9_NOTAG + 1, in p9_tag_alloc()
295 tag = idr_alloc(&c->reqs, req, 0, P9_NOTAG, GFP_NOWAIT); in p9_tag_alloc()
296 req->tc.tag = tag; in p9_tag_alloc()
312 refcount_set(&req->refcount.refcount, 2); in p9_tag_alloc()
314 return req; in p9_tag_alloc()
317 p9_fcall_fini(&req->tc); in p9_tag_alloc()
318 p9_fcall_fini(&req->rc); in p9_tag_alloc()
320 kmem_cache_free(p9_req_cache, req); in p9_tag_alloc()
334 struct p9_req_t *req; in p9_tag_lookup() local
338 req = idr_find(&c->reqs, tag); in p9_tag_lookup()
339 if (req) { in p9_tag_lookup()
345 if (!p9_req_try_get(req)) in p9_tag_lookup()
347 if (req->tc.tag != tag) { in p9_tag_lookup()
348 p9_req_put(req); in p9_tag_lookup()
354 return req; in p9_tag_lookup()
400 struct p9_req_t *req; in p9_tag_cleanup() local
404 idr_for_each_entry(&c->reqs, req, id) { in p9_tag_cleanup()
406 if (p9_tag_remove(c, req) == 0) in p9_tag_cleanup()
408 req->tc.tag); in p9_tag_cleanup()
419 void p9_client_cb(struct p9_client *c, struct p9_req_t *req, int status) in p9_client_cb() argument
421 p9_debug(P9_DEBUG_MUX, " tag %d\n", req->tc.tag); in p9_client_cb()
428 req->status = status; in p9_client_cb()
430 wake_up(&req->wq); in p9_client_cb()
431 p9_debug(P9_DEBUG_MUX, "wakeup: %d\n", req->tc.tag); in p9_client_cb()
432 p9_req_put(req); in p9_client_cb()
497 static int p9_check_errors(struct p9_client *c, struct p9_req_t *req) in p9_check_errors() argument
503 err = p9_parse_header(&req->rc, NULL, &type, NULL, 0); in p9_check_errors()
504 if (req->rc.size >= c->msize) { in p9_check_errors()
507 req->rc.size); in p9_check_errors()
514 trace_9p_protocol_dump(c, &req->rc); in p9_check_errors()
524 err = p9pdu_readf(&req->rc, c->proto_version, "s?d", in p9_check_errors()
540 err = p9pdu_readf(&req->rc, c->proto_version, "d", &ecode); in p9_check_errors()
566 static int p9_check_zc_errors(struct p9_client *c, struct p9_req_t *req, in p9_check_zc_errors() argument
574 err = p9_parse_header(&req->rc, NULL, &type, NULL, 0); in p9_check_zc_errors()
579 trace_9p_protocol_dump(c, &req->rc); in p9_check_zc_errors()
594 len = req->rc.size - req->rc.offset; in p9_check_zc_errors()
600 ename = &req->rc.sdata[req->rc.offset]; in p9_check_zc_errors()
610 err = p9pdu_readf(&req->rc, c->proto_version, "s?d", in p9_check_zc_errors()
626 err = p9pdu_readf(&req->rc, c->proto_version, "d", &ecode); in p9_check_zc_errors()
655 struct p9_req_t *req; in p9_client_flush() local
665 req = p9_client_rpc(c, P9_TFLUSH, "w", oldtag); in p9_client_flush()
666 if (IS_ERR(req)) in p9_client_flush()
667 return PTR_ERR(req); in p9_client_flush()
678 p9_tag_remove(c, req); in p9_client_flush()
687 struct p9_req_t *req; in p9_client_prepare_req() local
699 req = p9_tag_alloc(c, type, req_size); in p9_client_prepare_req()
700 if (IS_ERR(req)) in p9_client_prepare_req()
701 return req; in p9_client_prepare_req()
704 p9pdu_prepare(&req->tc, req->tc.tag, type); in p9_client_prepare_req()
705 err = p9pdu_vwritef(&req->tc, c->proto_version, fmt, ap); in p9_client_prepare_req()
708 p9pdu_finalize(c, &req->tc); in p9_client_prepare_req()
709 trace_9p_client_req(c, type, req->tc.tag); in p9_client_prepare_req()
710 return req; in p9_client_prepare_req()
712 p9_tag_remove(c, req); in p9_client_prepare_req()
714 p9_req_put(req); in p9_client_prepare_req()
733 struct p9_req_t *req; in p9_client_rpc() local
736 req = p9_client_prepare_req(c, type, c->msize, fmt, ap); in p9_client_rpc()
738 if (IS_ERR(req)) in p9_client_rpc()
739 return req; in p9_client_rpc()
747 err = c->trans_mod->request(c, req); in p9_client_rpc()
750 p9_req_put(req); in p9_client_rpc()
757 err = wait_event_killable(req->wq, req->status >= REQ_STATUS_RCVD); in p9_client_rpc()
772 if (req->status == REQ_STATUS_ERROR) { in p9_client_rpc()
773 p9_debug(P9_DEBUG_ERROR, "req_status error %d\n", req->t_err); in p9_client_rpc()
774 err = req->t_err; in p9_client_rpc()
781 if (c->trans_mod->cancel(c, req)) in p9_client_rpc()
782 p9_client_flush(c, req); in p9_client_rpc()
785 if (req->status == REQ_STATUS_RCVD) in p9_client_rpc()
797 err = p9_check_errors(c, req); in p9_client_rpc()
798 trace_9p_client_res(c, type, req->rc.tag, err); in p9_client_rpc()
800 return req; in p9_client_rpc()
802 p9_tag_remove(c, req); in p9_client_rpc()
828 struct p9_req_t *req; in p9_client_zc_rpc() local
835 req = p9_client_prepare_req(c, type, P9_ZC_HDR_SZ, fmt, ap); in p9_client_zc_rpc()
837 if (IS_ERR(req)) in p9_client_zc_rpc()
838 return req; in p9_client_zc_rpc()
846 err = c->trans_mod->zc_request(c, req, uidata, uodata, in p9_client_zc_rpc()
854 if (req->status == REQ_STATUS_ERROR) { in p9_client_zc_rpc()
855 p9_debug(P9_DEBUG_ERROR, "req_status error %d\n", req->t_err); in p9_client_zc_rpc()
856 err = req->t_err; in p9_client_zc_rpc()
863 if (c->trans_mod->cancel(c, req)) in p9_client_zc_rpc()
864 p9_client_flush(c, req); in p9_client_zc_rpc()
867 if (req->status == REQ_STATUS_RCVD) in p9_client_zc_rpc()
879 err = p9_check_zc_errors(c, req, uidata, in_hdrlen); in p9_client_zc_rpc()
880 trace_9p_client_res(c, type, req->rc.tag, err); in p9_client_zc_rpc()
882 return req; in p9_client_zc_rpc()
884 p9_tag_remove(c, req); in p9_client_zc_rpc()
936 struct p9_req_t *req; in p9_client_version() local
945 req = p9_client_rpc(c, P9_TVERSION, "ds", in p9_client_version()
949 req = p9_client_rpc(c, P9_TVERSION, "ds", in p9_client_version()
953 req = p9_client_rpc(c, P9_TVERSION, "ds", in p9_client_version()
960 if (IS_ERR(req)) in p9_client_version()
961 return PTR_ERR(req); in p9_client_version()
963 err = p9pdu_readf(&req->rc, c->proto_version, "ds", &msize, &version); in p9_client_version()
966 trace_9p_protocol_dump(c, &req->rc); in p9_client_version()
995 p9_tag_remove(c, req); in p9_client_version()
1120 struct p9_req_t *req; in p9_client_attach() local
1134 req = p9_client_rpc(clnt, P9_TATTACH, "ddss?u", fid->fid, in p9_client_attach()
1136 if (IS_ERR(req)) { in p9_client_attach()
1137 err = PTR_ERR(req); in p9_client_attach()
1141 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", &qid); in p9_client_attach()
1143 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_attach()
1144 p9_tag_remove(clnt, req); in p9_client_attach()
1153 p9_tag_remove(clnt, req); in p9_client_attach()
1170 struct p9_req_t *req; in p9_client_walk() local
1191 req = p9_client_rpc(clnt, P9_TWALK, "ddT", oldfid->fid, fid->fid, in p9_client_walk()
1193 if (IS_ERR(req)) { in p9_client_walk()
1194 err = PTR_ERR(req); in p9_client_walk()
1198 err = p9pdu_readf(&req->rc, clnt->proto_version, "R", &nwqids, &wqids); in p9_client_walk()
1200 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_walk()
1201 p9_tag_remove(clnt, req); in p9_client_walk()
1204 p9_tag_remove(clnt, req); in p9_client_walk()
1244 struct p9_req_t *req; in p9_client_open() local
1257 req = p9_client_rpc(clnt, P9_TLOPEN, "dd", fid->fid, mode); in p9_client_open()
1259 req = p9_client_rpc(clnt, P9_TOPEN, "db", fid->fid, mode); in p9_client_open()
1260 if (IS_ERR(req)) { in p9_client_open()
1261 err = PTR_ERR(req); in p9_client_open()
1265 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", &qid, &iounit); in p9_client_open()
1267 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_open()
1279 p9_tag_remove(clnt, req); in p9_client_open()
1290 struct p9_req_t *req; in p9_client_create_dotl() local
1302 req = p9_client_rpc(clnt, P9_TLCREATE, "dsddg", ofid->fid, name, flags, in p9_client_create_dotl()
1304 if (IS_ERR(req)) { in p9_client_create_dotl()
1305 err = PTR_ERR(req); in p9_client_create_dotl()
1309 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", qid, &iounit); in p9_client_create_dotl()
1311 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_create_dotl()
1324 p9_tag_remove(clnt, req); in p9_client_create_dotl()
1335 struct p9_req_t *req; in p9_client_fcreate() local
1347 req = p9_client_rpc(clnt, P9_TCREATE, "dsdb?s", fid->fid, name, perm, in p9_client_fcreate()
1349 if (IS_ERR(req)) { in p9_client_fcreate()
1350 err = PTR_ERR(req); in p9_client_fcreate()
1354 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", &qid, &iounit); in p9_client_fcreate()
1356 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_fcreate()
1369 p9_tag_remove(clnt, req); in p9_client_fcreate()
1380 struct p9_req_t *req; in p9_client_symlink() local
1386 req = p9_client_rpc(clnt, P9_TSYMLINK, "dssg", dfid->fid, name, symtgt, in p9_client_symlink()
1388 if (IS_ERR(req)) { in p9_client_symlink()
1389 err = PTR_ERR(req); in p9_client_symlink()
1393 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_symlink()
1395 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_symlink()
1403 p9_tag_remove(clnt, req); in p9_client_symlink()
1412 struct p9_req_t *req; in p9_client_link() local
1417 req = p9_client_rpc(clnt, P9_TLINK, "dds", dfid->fid, oldfid->fid, in p9_client_link()
1419 if (IS_ERR(req)) in p9_client_link()
1420 return PTR_ERR(req); in p9_client_link()
1423 p9_tag_remove(clnt, req); in p9_client_link()
1432 struct p9_req_t *req; in p9_client_fsync() local
1439 req = p9_client_rpc(clnt, P9_TFSYNC, "dd", fid->fid, datasync); in p9_client_fsync()
1440 if (IS_ERR(req)) { in p9_client_fsync()
1441 err = PTR_ERR(req); in p9_client_fsync()
1447 p9_tag_remove(clnt, req); in p9_client_fsync()
1458 struct p9_req_t *req; in p9_client_clunk() local
1474 req = p9_client_rpc(clnt, P9_TCLUNK, "d", fid->fid); in p9_client_clunk()
1475 if (IS_ERR(req)) { in p9_client_clunk()
1476 err = PTR_ERR(req); in p9_client_clunk()
1482 p9_tag_remove(clnt, req); in p9_client_clunk()
1502 struct p9_req_t *req; in p9_client_remove() local
1508 req = p9_client_rpc(clnt, P9_TREMOVE, "d", fid->fid); in p9_client_remove()
1509 if (IS_ERR(req)) { in p9_client_remove()
1510 err = PTR_ERR(req); in p9_client_remove()
1516 p9_tag_remove(clnt, req); in p9_client_remove()
1529 struct p9_req_t *req; in p9_client_unlinkat() local
1536 req = p9_client_rpc(clnt, P9_TUNLINKAT, "dsd", dfid->fid, name, flags); in p9_client_unlinkat()
1537 if (IS_ERR(req)) { in p9_client_unlinkat()
1538 err = PTR_ERR(req); in p9_client_unlinkat()
1543 p9_tag_remove(clnt, req); in p9_client_unlinkat()
1553 struct p9_req_t *req; in p9_client_read() local
1578 req = p9_client_zc_rpc(clnt, P9_TREAD, to, NULL, rsize, in p9_client_read()
1583 req = p9_client_rpc(clnt, P9_TREAD, "dqd", fid->fid, offset, in p9_client_read()
1586 if (IS_ERR(req)) { in p9_client_read()
1587 *err = PTR_ERR(req); in p9_client_read()
1591 *err = p9pdu_readf(&req->rc, clnt->proto_version, in p9_client_read()
1594 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_read()
1595 p9_tag_remove(clnt, req); in p9_client_read()
1605 p9_tag_remove(clnt, req); in p9_client_read()
1615 p9_tag_remove(clnt, req); in p9_client_read()
1623 p9_tag_remove(clnt, req); in p9_client_read()
1633 struct p9_req_t *req; in p9_client_write() local
1652 req = p9_client_zc_rpc(clnt, P9_TWRITE, NULL, from, 0, in p9_client_write()
1656 req = p9_client_rpc(clnt, P9_TWRITE, "dqV", fid->fid, in p9_client_write()
1659 if (IS_ERR(req)) { in p9_client_write()
1660 *err = PTR_ERR(req); in p9_client_write()
1664 *err = p9pdu_readf(&req->rc, clnt->proto_version, "d", &count); in p9_client_write()
1666 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_write()
1667 p9_tag_remove(clnt, req); in p9_client_write()
1677 p9_tag_remove(clnt, req); in p9_client_write()
1691 struct p9_req_t *req; in p9_client_stat() local
1702 req = p9_client_rpc(clnt, P9_TSTAT, "d", fid->fid); in p9_client_stat()
1703 if (IS_ERR(req)) { in p9_client_stat()
1704 err = PTR_ERR(req); in p9_client_stat()
1708 err = p9pdu_readf(&req->rc, clnt->proto_version, "wS", &ignored, ret); in p9_client_stat()
1710 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_stat()
1711 p9_tag_remove(clnt, req); in p9_client_stat()
1728 p9_tag_remove(clnt, req); in p9_client_stat()
1744 struct p9_req_t *req; in p9_client_getattr_dotl() local
1755 req = p9_client_rpc(clnt, P9_TGETATTR, "dq", fid->fid, request_mask); in p9_client_getattr_dotl()
1756 if (IS_ERR(req)) { in p9_client_getattr_dotl()
1757 err = PTR_ERR(req); in p9_client_getattr_dotl()
1761 err = p9pdu_readf(&req->rc, clnt->proto_version, "A", ret); in p9_client_getattr_dotl()
1763 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_getattr_dotl()
1764 p9_tag_remove(clnt, req); in p9_client_getattr_dotl()
1789 p9_tag_remove(clnt, req); in p9_client_getattr_dotl()
1830 struct p9_req_t *req; in p9_client_wstat() local
1850 req = p9_client_rpc(clnt, P9_TWSTAT, "dwS", fid->fid, wst->size+2, wst); in p9_client_wstat()
1851 if (IS_ERR(req)) { in p9_client_wstat()
1852 err = PTR_ERR(req); in p9_client_wstat()
1858 p9_tag_remove(clnt, req); in p9_client_wstat()
1867 struct p9_req_t *req; in p9_client_setattr() local
1883 req = p9_client_rpc(clnt, P9_TSETATTR, "dI", fid->fid, p9attr); in p9_client_setattr()
1885 if (IS_ERR(req)) { in p9_client_setattr()
1886 err = PTR_ERR(req); in p9_client_setattr()
1890 p9_tag_remove(clnt, req); in p9_client_setattr()
1899 struct p9_req_t *req; in p9_client_statfs() local
1907 req = p9_client_rpc(clnt, P9_TSTATFS, "d", fid->fid); in p9_client_statfs()
1908 if (IS_ERR(req)) { in p9_client_statfs()
1909 err = PTR_ERR(req); in p9_client_statfs()
1913 err = p9pdu_readf(&req->rc, clnt->proto_version, "ddqqqqqqd", &sb->type, in p9_client_statfs()
1917 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_statfs()
1918 p9_tag_remove(clnt, req); in p9_client_statfs()
1929 p9_tag_remove(clnt, req); in p9_client_statfs()
1939 struct p9_req_t *req; in p9_client_rename() local
1948 req = p9_client_rpc(clnt, P9_TRENAME, "dds", fid->fid, in p9_client_rename()
1950 if (IS_ERR(req)) { in p9_client_rename()
1951 err = PTR_ERR(req); in p9_client_rename()
1957 p9_tag_remove(clnt, req); in p9_client_rename()
1967 struct p9_req_t *req; in p9_client_renameat() local
1977 req = p9_client_rpc(clnt, P9_TRENAMEAT, "dsds", olddirfid->fid, in p9_client_renameat()
1979 if (IS_ERR(req)) { in p9_client_renameat()
1980 err = PTR_ERR(req); in p9_client_renameat()
1987 p9_tag_remove(clnt, req); in p9_client_renameat()
2000 struct p9_req_t *req; in p9_client_xattrwalk() local
2015 req = p9_client_rpc(clnt, P9_TXATTRWALK, "dds", in p9_client_xattrwalk()
2017 if (IS_ERR(req)) { in p9_client_xattrwalk()
2018 err = PTR_ERR(req); in p9_client_xattrwalk()
2021 err = p9pdu_readf(&req->rc, clnt->proto_version, "q", attr_size); in p9_client_xattrwalk()
2023 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_xattrwalk()
2024 p9_tag_remove(clnt, req); in p9_client_xattrwalk()
2027 p9_tag_remove(clnt, req); in p9_client_xattrwalk()
2046 struct p9_req_t *req; in p9_client_xattrcreate() local
2054 req = p9_client_rpc(clnt, P9_TXATTRCREATE, "dsqd", in p9_client_xattrcreate()
2056 if (IS_ERR(req)) { in p9_client_xattrcreate()
2057 err = PTR_ERR(req); in p9_client_xattrcreate()
2061 p9_tag_remove(clnt, req); in p9_client_xattrcreate()
2071 struct p9_req_t *req; in p9_client_readdir() local
2097 req = p9_client_zc_rpc(clnt, P9_TREADDIR, &to, NULL, rsize, 0, in p9_client_readdir()
2101 req = p9_client_rpc(clnt, P9_TREADDIR, "dqd", fid->fid, in p9_client_readdir()
2104 if (IS_ERR(req)) { in p9_client_readdir()
2105 err = PTR_ERR(req); in p9_client_readdir()
2109 err = p9pdu_readf(&req->rc, clnt->proto_version, "D", &count, &dataptr); in p9_client_readdir()
2111 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_readdir()
2124 p9_tag_remove(clnt, req); in p9_client_readdir()
2128 p9_tag_remove(clnt, req); in p9_client_readdir()
2139 struct p9_req_t *req; in p9_client_mknod_dotl() local
2145 req = p9_client_rpc(clnt, P9_TMKNOD, "dsdddg", fid->fid, name, mode, in p9_client_mknod_dotl()
2147 if (IS_ERR(req)) in p9_client_mknod_dotl()
2148 return PTR_ERR(req); in p9_client_mknod_dotl()
2150 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_mknod_dotl()
2152 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_mknod_dotl()
2159 p9_tag_remove(clnt, req); in p9_client_mknod_dotl()
2170 struct p9_req_t *req; in p9_client_mkdir_dotl() local
2176 req = p9_client_rpc(clnt, P9_TMKDIR, "dsdg", fid->fid, name, mode, in p9_client_mkdir_dotl()
2178 if (IS_ERR(req)) in p9_client_mkdir_dotl()
2179 return PTR_ERR(req); in p9_client_mkdir_dotl()
2181 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_mkdir_dotl()
2183 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_mkdir_dotl()
2190 p9_tag_remove(clnt, req); in p9_client_mkdir_dotl()
2200 struct p9_req_t *req; in p9_client_lock_dotl() local
2209 req = p9_client_rpc(clnt, P9_TLOCK, "dbdqqds", fid->fid, flock->type, in p9_client_lock_dotl()
2213 if (IS_ERR(req)) in p9_client_lock_dotl()
2214 return PTR_ERR(req); in p9_client_lock_dotl()
2216 err = p9pdu_readf(&req->rc, clnt->proto_version, "b", status); in p9_client_lock_dotl()
2218 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_lock_dotl()
2223 p9_tag_remove(clnt, req); in p9_client_lock_dotl()
2233 struct p9_req_t *req; in p9_client_getlock_dotl() local
2241 req = p9_client_rpc(clnt, P9_TGETLOCK, "dbqqds", fid->fid, glock->type, in p9_client_getlock_dotl()
2244 if (IS_ERR(req)) in p9_client_getlock_dotl()
2245 return PTR_ERR(req); in p9_client_getlock_dotl()
2247 err = p9pdu_readf(&req->rc, clnt->proto_version, "bqqds", &glock->type, in p9_client_getlock_dotl()
2251 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_getlock_dotl()
2258 p9_tag_remove(clnt, req); in p9_client_getlock_dotl()
2267 struct p9_req_t *req; in p9_client_readlink() local
2273 req = p9_client_rpc(clnt, P9_TREADLINK, "d", fid->fid); in p9_client_readlink()
2274 if (IS_ERR(req)) in p9_client_readlink()
2275 return PTR_ERR(req); in p9_client_readlink()
2277 err = p9pdu_readf(&req->rc, clnt->proto_version, "s", target); in p9_client_readlink()
2279 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_readlink()
2284 p9_tag_remove(clnt, req); in p9_client_readlink()