Lines Matching refs:clnt
58 inline int p9_is_proto_dotl(struct p9_client *clnt) in p9_is_proto_dotl() argument
60 return clnt->proto_version == p9_proto_2000L; in p9_is_proto_dotl()
64 inline int p9_is_proto_dotu(struct p9_client *clnt) in p9_is_proto_dotu() argument
66 return clnt->proto_version == p9_proto_2000u; in p9_is_proto_dotu()
70 int p9_show_client_options(struct seq_file *m, struct p9_client *clnt) in p9_show_client_options() argument
72 if (clnt->msize != DEFAULT_MSIZE) in p9_show_client_options()
73 seq_printf(m, ",msize=%u", clnt->msize); in p9_show_client_options()
74 seq_printf(m, ",trans=%s", clnt->trans_mod->name); in p9_show_client_options()
76 switch (clnt->proto_version) { in p9_show_client_options()
88 if (clnt->trans_mod->show_options) in p9_show_client_options()
89 return clnt->trans_mod->show_options(m, clnt); in p9_show_client_options()
135 static int parse_opts(char *opts, struct p9_client *clnt) in parse_opts() argument
144 clnt->proto_version = p9_proto_2000L; in parse_opts()
145 clnt->msize = DEFAULT_MSIZE; in parse_opts()
176 clnt->msize = option; in parse_opts()
187 v9fs_put_trans(clnt->trans_mod); in parse_opts()
188 clnt->trans_mod = v9fs_get_trans_by_name(s); in parse_opts()
189 if (!clnt->trans_mod) { in parse_opts()
197 clnt->proto_version = p9_proto_legacy; in parse_opts()
211 clnt->proto_version = r; in parse_opts()
221 v9fs_put_trans(clnt->trans_mod); in parse_opts()
850 static struct p9_fid *p9_fid_create(struct p9_client *clnt) in p9_fid_create() argument
855 p9_debug(P9_DEBUG_FID, "clnt %p\n", clnt); in p9_fid_create()
862 fid->clnt = clnt; in p9_fid_create()
866 spin_lock_irq(&clnt->lock); in p9_fid_create()
867 ret = idr_alloc_u32(&clnt->fids, fid, &fid->fid, P9_NOFID - 1, in p9_fid_create()
869 spin_unlock_irq(&clnt->lock); in p9_fid_create()
882 struct p9_client *clnt; in p9_fid_destroy() local
887 clnt = fid->clnt; in p9_fid_destroy()
888 spin_lock_irqsave(&clnt->lock, flags); in p9_fid_destroy()
889 idr_remove(&clnt->fids, fid->fid); in p9_fid_destroy()
890 spin_unlock_irqrestore(&clnt->lock, flags); in p9_fid_destroy()
981 struct p9_client *clnt; in p9_client_create() local
985 clnt = kmalloc(sizeof(*clnt), GFP_KERNEL); in p9_client_create()
986 if (!clnt) in p9_client_create()
989 clnt->trans_mod = NULL; in p9_client_create()
990 clnt->trans = NULL; in p9_client_create()
991 clnt->fcall_cache = NULL; in p9_client_create()
994 memcpy(clnt->name, client_id, strlen(client_id) + 1); in p9_client_create()
996 spin_lock_init(&clnt->lock); in p9_client_create()
997 idr_init(&clnt->fids); in p9_client_create()
998 idr_init(&clnt->reqs); in p9_client_create()
1000 err = parse_opts(options, clnt); in p9_client_create()
1004 if (!clnt->trans_mod) in p9_client_create()
1005 clnt->trans_mod = v9fs_get_default_trans(); in p9_client_create()
1007 if (!clnt->trans_mod) { in p9_client_create()
1015 clnt, clnt->trans_mod, clnt->msize, clnt->proto_version); in p9_client_create()
1017 err = clnt->trans_mod->create(clnt, dev_name, options); in p9_client_create()
1021 if (clnt->msize > clnt->trans_mod->maxsize) { in p9_client_create()
1022 clnt->msize = clnt->trans_mod->maxsize; in p9_client_create()
1025 clnt->msize, clnt->trans_mod->name in p9_client_create()
1029 if (clnt->msize < 4096) { in p9_client_create()
1036 err = p9_client_version(clnt); in p9_client_create()
1050 clnt->fcall_cache = in p9_client_create()
1051 kmem_cache_create_usercopy(cache_name, clnt->msize, in p9_client_create()
1053 clnt->msize - (P9_HDRSZ + 4), in p9_client_create()
1057 return clnt; in p9_client_create()
1060 clnt->trans_mod->close(clnt); in p9_client_create()
1062 v9fs_put_trans(clnt->trans_mod); in p9_client_create()
1064 kfree(clnt); in p9_client_create()
1069 void p9_client_destroy(struct p9_client *clnt) in p9_client_destroy() argument
1074 p9_debug(P9_DEBUG_MUX, "clnt %p\n", clnt); in p9_client_destroy()
1076 if (clnt->trans_mod) in p9_client_destroy()
1077 clnt->trans_mod->close(clnt); in p9_client_destroy()
1079 v9fs_put_trans(clnt->trans_mod); in p9_client_destroy()
1081 idr_for_each_entry(&clnt->fids, fid, id) { in p9_client_destroy()
1086 p9_tag_cleanup(clnt); in p9_client_destroy()
1088 kmem_cache_destroy(clnt->fcall_cache); in p9_client_destroy()
1089 kfree(clnt); in p9_client_destroy()
1093 void p9_client_disconnect(struct p9_client *clnt) in p9_client_disconnect() argument
1095 p9_debug(P9_DEBUG_9P, "clnt %p\n", clnt); in p9_client_disconnect()
1096 clnt->status = Disconnected; in p9_client_disconnect()
1100 void p9_client_begin_disconnect(struct p9_client *clnt) in p9_client_begin_disconnect() argument
1102 p9_debug(P9_DEBUG_9P, "clnt %p\n", clnt); in p9_client_begin_disconnect()
1103 clnt->status = BeginDisconnect; in p9_client_begin_disconnect()
1107 struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid, in p9_client_attach() argument
1118 fid = p9_fid_create(clnt); in p9_client_attach()
1125 req = p9_client_rpc(clnt, P9_TATTACH, "ddss?u", fid->fid, in p9_client_attach()
1132 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", &qid); in p9_client_attach()
1134 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_attach()
1135 p9_req_put(clnt, req); in p9_client_attach()
1144 p9_req_put(clnt, req); in p9_client_attach()
1158 struct p9_client *clnt; in p9_client_walk() local
1165 clnt = oldfid->clnt; in p9_client_walk()
1167 fid = p9_fid_create(clnt); in p9_client_walk()
1180 req = p9_client_rpc(clnt, P9_TWALK, "ddT", oldfid->fid, fid->fid, in p9_client_walk()
1187 err = p9pdu_readf(&req->rc, clnt->proto_version, "R", &nwqids, &wqids); in p9_client_walk()
1189 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_walk()
1190 p9_req_put(clnt, req); in p9_client_walk()
1193 p9_req_put(clnt, req); in p9_client_walk()
1232 struct p9_client *clnt; in p9_client_open() local
1237 clnt = fid->clnt; in p9_client_open()
1239 p9_is_proto_dotl(clnt) ? "TLOPEN" : "TOPEN", fid->fid, mode); in p9_client_open()
1244 if (p9_is_proto_dotl(clnt)) in p9_client_open()
1245 req = p9_client_rpc(clnt, P9_TLOPEN, "dd", fid->fid, mode & P9L_MODE_MASK); in p9_client_open()
1247 req = p9_client_rpc(clnt, P9_TOPEN, "db", fid->fid, mode & P9L_MODE_MASK); in p9_client_open()
1253 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", &qid, &iounit); in p9_client_open()
1255 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_open()
1260 p9_is_proto_dotl(clnt) ? "RLOPEN" : "ROPEN", qid.type, in p9_client_open()
1268 p9_req_put(clnt, req); in p9_client_open()
1278 struct p9_client *clnt; in p9_client_create_dotl() local
1286 clnt = ofid->clnt; in p9_client_create_dotl()
1291 req = p9_client_rpc(clnt, P9_TLCREATE, "dsddg", ofid->fid, name, flags, in p9_client_create_dotl()
1298 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", qid, &iounit); in p9_client_create_dotl()
1300 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_create_dotl()
1312 p9_req_put(clnt, req); in p9_client_create_dotl()
1322 struct p9_client *clnt; in p9_client_fcreate() local
1329 clnt = fid->clnt; in p9_client_fcreate()
1334 req = p9_client_rpc(clnt, P9_TCREATE, "dsdb?s", fid->fid, name, perm, in p9_client_fcreate()
1341 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", &qid, &iounit); in p9_client_fcreate()
1343 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_fcreate()
1355 p9_req_put(clnt, req); in p9_client_fcreate()
1365 struct p9_client *clnt; in p9_client_symlink() local
1370 clnt = dfid->clnt; in p9_client_symlink()
1372 req = p9_client_rpc(clnt, P9_TSYMLINK, "dssg", dfid->fid, name, symtgt, in p9_client_symlink()
1379 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_symlink()
1381 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_symlink()
1389 p9_req_put(clnt, req); in p9_client_symlink()
1397 struct p9_client *clnt; in p9_client_link() local
1402 clnt = dfid->clnt; in p9_client_link()
1403 req = p9_client_rpc(clnt, P9_TLINK, "dds", dfid->fid, oldfid->fid, in p9_client_link()
1409 p9_req_put(clnt, req); in p9_client_link()
1417 struct p9_client *clnt; in p9_client_fsync() local
1422 clnt = fid->clnt; in p9_client_fsync()
1424 req = p9_client_rpc(clnt, P9_TFSYNC, "dd", fid->fid, datasync); in p9_client_fsync()
1432 p9_req_put(clnt, req); in p9_client_fsync()
1442 struct p9_client *clnt; in p9_client_clunk() local
1449 clnt = fid->clnt; in p9_client_clunk()
1451 req = p9_client_rpc(clnt, P9_TCLUNK, "d", fid->fid); in p9_client_clunk()
1459 p9_req_put(clnt, req); in p9_client_clunk()
1478 struct p9_client *clnt; in p9_client_remove() local
1482 clnt = fid->clnt; in p9_client_remove()
1484 req = p9_client_rpc(clnt, P9_TREMOVE, "d", fid->fid); in p9_client_remove()
1492 p9_req_put(clnt, req); in p9_client_remove()
1506 struct p9_client *clnt; in p9_client_unlinkat() local
1511 clnt = dfid->clnt; in p9_client_unlinkat()
1512 req = p9_client_rpc(clnt, P9_TUNLINKAT, "dsd", dfid->fid, name, flags); in p9_client_unlinkat()
1519 p9_req_put(clnt, req); in p9_client_unlinkat()
1548 struct p9_client *clnt = fid->clnt; in p9_client_read_once() local
1560 if (!rsize || rsize > clnt->msize - P9_IOHDRSZ) in p9_client_read_once()
1561 rsize = clnt->msize - P9_IOHDRSZ; in p9_client_read_once()
1567 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_read_once()
1571 req = p9_client_zc_rpc(clnt, P9_TREAD, to, NULL, rsize, in p9_client_read_once()
1576 req = p9_client_rpc(clnt, P9_TREAD, "dqd", fid->fid, offset, in p9_client_read_once()
1586 *err = p9pdu_readf(&req->rc, clnt->proto_version, in p9_client_read_once()
1591 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_read_once()
1592 p9_req_put(clnt, req); in p9_client_read_once()
1598 p9_req_put(clnt, req); in p9_client_read_once()
1609 p9_req_put(clnt, req); in p9_client_read_once()
1615 p9_req_put(clnt, req); in p9_client_read_once()
1623 struct p9_client *clnt = fid->clnt; in p9_client_write() local
1633 if (!rsize || rsize > clnt->msize - P9_IOHDRSZ) in p9_client_write()
1634 rsize = clnt->msize - P9_IOHDRSZ; in p9_client_write()
1643 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_write()
1644 req = p9_client_zc_rpc(clnt, P9_TWRITE, NULL, from, 0, in p9_client_write()
1648 req = p9_client_rpc(clnt, P9_TWRITE, "dqV", fid->fid, in p9_client_write()
1657 *err = p9pdu_readf(&req->rc, clnt->proto_version, "d", &written); in p9_client_write()
1660 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_write()
1661 p9_req_put(clnt, req); in p9_client_write()
1668 p9_req_put(clnt, req); in p9_client_write()
1674 p9_req_put(clnt, req); in p9_client_write()
1688 struct p9_client *clnt = fid->clnt; in p9_client_write_subreq() local
1698 if (clnt->trans_mod->zc_request && len > 1024) { in p9_client_write_subreq()
1699 req = p9_client_zc_rpc(clnt, P9_TWRITE, NULL, &subreq->io_iter, in p9_client_write_subreq()
1703 req = p9_client_rpc(clnt, P9_TWRITE, "dqV", fid->fid, in p9_client_write_subreq()
1711 err = p9pdu_readf(&req->rc, clnt->proto_version, "d", &written); in p9_client_write_subreq()
1713 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_write_subreq()
1714 p9_req_put(clnt, req); in p9_client_write_subreq()
1726 p9_req_put(clnt, req); in p9_client_write_subreq()
1734 struct p9_client *clnt; in p9_client_stat() local
1745 clnt = fid->clnt; in p9_client_stat()
1747 req = p9_client_rpc(clnt, P9_TSTAT, "d", fid->fid); in p9_client_stat()
1753 err = p9pdu_readf(&req->rc, clnt->proto_version, "wS", &ignored, ret); in p9_client_stat()
1755 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_stat()
1756 p9_req_put(clnt, req); in p9_client_stat()
1773 p9_req_put(clnt, req); in p9_client_stat()
1786 struct p9_client *clnt; in p9_client_getattr_dotl() local
1797 clnt = fid->clnt; in p9_client_getattr_dotl()
1799 req = p9_client_rpc(clnt, P9_TGETATTR, "dq", fid->fid, request_mask); in p9_client_getattr_dotl()
1805 err = p9pdu_readf(&req->rc, clnt->proto_version, "A", ret); in p9_client_getattr_dotl()
1807 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_getattr_dotl()
1808 p9_req_put(clnt, req); in p9_client_getattr_dotl()
1834 p9_req_put(clnt, req); in p9_client_getattr_dotl()
1877 struct p9_client *clnt; in p9_client_wstat() local
1879 clnt = fid->clnt; in p9_client_wstat()
1880 wst->size = p9_client_statsize(wst, clnt->proto_version); in p9_client_wstat()
1896 req = p9_client_rpc(clnt, P9_TWSTAT, "dwS", in p9_client_wstat()
1905 p9_req_put(clnt, req); in p9_client_wstat()
1915 struct p9_client *clnt; in p9_client_setattr() local
1917 clnt = fid->clnt; in p9_client_setattr()
1929 req = p9_client_rpc(clnt, P9_TSETATTR, "dI", fid->fid, p9attr); in p9_client_setattr()
1936 p9_req_put(clnt, req); in p9_client_setattr()
1946 struct p9_client *clnt; in p9_client_statfs() local
1948 clnt = fid->clnt; in p9_client_statfs()
1952 req = p9_client_rpc(clnt, P9_TSTATFS, "d", fid->fid); in p9_client_statfs()
1958 err = p9pdu_readf(&req->rc, clnt->proto_version, "ddqqqqqqd", &sb->type, in p9_client_statfs()
1962 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_statfs()
1963 p9_req_put(clnt, req); in p9_client_statfs()
1972 p9_req_put(clnt, req); in p9_client_statfs()
1983 struct p9_client *clnt; in p9_client_rename() local
1985 clnt = fid->clnt; in p9_client_rename()
1990 req = p9_client_rpc(clnt, P9_TRENAME, "dds", fid->fid, in p9_client_rename()
1999 p9_req_put(clnt, req); in p9_client_rename()
2010 struct p9_client *clnt; in p9_client_renameat() local
2012 clnt = olddirfid->clnt; in p9_client_renameat()
2018 req = p9_client_rpc(clnt, P9_TRENAMEAT, "dsds", olddirfid->fid, in p9_client_renameat()
2028 p9_req_put(clnt, req); in p9_client_renameat()
2041 struct p9_client *clnt; in p9_client_xattrwalk() local
2044 clnt = file_fid->clnt; in p9_client_xattrwalk()
2045 attr_fid = p9_fid_create(clnt); in p9_client_xattrwalk()
2054 req = p9_client_rpc(clnt, P9_TXATTRWALK, "dds", in p9_client_xattrwalk()
2060 err = p9pdu_readf(&req->rc, clnt->proto_version, "q", attr_size); in p9_client_xattrwalk()
2062 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_xattrwalk()
2063 p9_req_put(clnt, req); in p9_client_xattrwalk()
2066 p9_req_put(clnt, req); in p9_client_xattrwalk()
2086 struct p9_client *clnt; in p9_client_xattrcreate() local
2091 clnt = fid->clnt; in p9_client_xattrcreate()
2092 req = p9_client_rpc(clnt, P9_TXATTRCREATE, "dsqd", in p9_client_xattrcreate()
2099 p9_req_put(clnt, req); in p9_client_xattrcreate()
2109 struct p9_client *clnt; in p9_client_readdir() local
2120 clnt = fid->clnt; in p9_client_readdir()
2123 if (!rsize || rsize > clnt->msize - P9_READDIRHDRSZ) in p9_client_readdir()
2124 rsize = clnt->msize - P9_READDIRHDRSZ; in p9_client_readdir()
2130 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_readdir()
2134 req = p9_client_zc_rpc(clnt, P9_TREADDIR, &to, NULL, rsize, 0, in p9_client_readdir()
2138 req = p9_client_rpc(clnt, P9_TREADDIR, "dqd", fid->fid, in p9_client_readdir()
2146 err = p9pdu_readf(&req->rc, clnt->proto_version, "D", &count, &dataptr); in p9_client_readdir()
2148 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_readdir()
2162 p9_req_put(clnt, req); in p9_client_readdir()
2166 p9_req_put(clnt, req); in p9_client_readdir()
2176 struct p9_client *clnt; in p9_client_mknod_dotl() local
2179 clnt = fid->clnt; in p9_client_mknod_dotl()
2183 req = p9_client_rpc(clnt, P9_TMKNOD, "dsdddg", fid->fid, name, mode, in p9_client_mknod_dotl()
2188 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_mknod_dotl()
2190 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_mknod_dotl()
2197 p9_req_put(clnt, req); in p9_client_mknod_dotl()
2206 struct p9_client *clnt; in p9_client_mkdir_dotl() local
2209 clnt = fid->clnt; in p9_client_mkdir_dotl()
2212 req = p9_client_rpc(clnt, P9_TMKDIR, "dsdg", in p9_client_mkdir_dotl()
2217 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_mkdir_dotl()
2219 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_mkdir_dotl()
2226 p9_req_put(clnt, req); in p9_client_mkdir_dotl()
2234 struct p9_client *clnt; in p9_client_lock_dotl() local
2237 clnt = fid->clnt; in p9_client_lock_dotl()
2243 req = p9_client_rpc(clnt, P9_TLOCK, "dbdqqds", fid->fid, flock->type, in p9_client_lock_dotl()
2250 err = p9pdu_readf(&req->rc, clnt->proto_version, "b", status); in p9_client_lock_dotl()
2252 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_lock_dotl()
2257 p9_req_put(clnt, req); in p9_client_lock_dotl()
2265 struct p9_client *clnt; in p9_client_getlock_dotl() local
2268 clnt = fid->clnt; in p9_client_getlock_dotl()
2274 req = p9_client_rpc(clnt, P9_TGETLOCK, "dbqqds", fid->fid, in p9_client_getlock_dotl()
2281 err = p9pdu_readf(&req->rc, clnt->proto_version, "bqqds", &glock->type, in p9_client_getlock_dotl()
2285 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_getlock_dotl()
2293 p9_req_put(clnt, req); in p9_client_getlock_dotl()
2301 struct p9_client *clnt; in p9_client_readlink() local
2304 clnt = fid->clnt; in p9_client_readlink()
2307 req = p9_client_rpc(clnt, P9_TREADLINK, "d", fid->fid); in p9_client_readlink()
2311 err = p9pdu_readf(&req->rc, clnt->proto_version, "s", target); in p9_client_readlink()
2313 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_readlink()
2318 p9_req_put(clnt, req); in p9_client_readlink()