Lines Matching refs:clnt

56 inline int p9_is_proto_dotl(struct p9_client *clnt)  in p9_is_proto_dotl()  argument
58 return clnt->proto_version == p9_proto_2000L; in p9_is_proto_dotl()
62 inline int p9_is_proto_dotu(struct p9_client *clnt) in p9_is_proto_dotu() argument
64 return clnt->proto_version == p9_proto_2000u; in p9_is_proto_dotu()
68 int p9_show_client_options(struct seq_file *m, struct p9_client *clnt) in p9_show_client_options() argument
70 if (clnt->msize != DEFAULT_MSIZE) in p9_show_client_options()
71 seq_printf(m, ",msize=%u", clnt->msize); in p9_show_client_options()
72 seq_printf(m, ",trans=%s", clnt->trans_mod->name); in p9_show_client_options()
74 switch (clnt->proto_version) { in p9_show_client_options()
86 if (clnt->trans_mod->show_options) in p9_show_client_options()
87 return clnt->trans_mod->show_options(m, clnt); in p9_show_client_options()
134 static int parse_opts(char *opts, struct p9_client *clnt) in parse_opts() argument
143 clnt->proto_version = p9_proto_2000L; in parse_opts()
144 clnt->msize = DEFAULT_MSIZE; in parse_opts()
177 clnt->msize = option; in parse_opts()
188 v9fs_put_trans(clnt->trans_mod); in parse_opts()
189 clnt->trans_mod = v9fs_get_trans_by_name(s); in parse_opts()
190 if (clnt->trans_mod == NULL) { in parse_opts()
198 clnt->proto_version = p9_proto_legacy; in parse_opts()
212 clnt->proto_version = r; in parse_opts()
222 v9fs_put_trans(clnt->trans_mod); in parse_opts()
892 static struct p9_fid *p9_fid_create(struct p9_client *clnt) in p9_fid_create() argument
897 p9_debug(P9_DEBUG_FID, "clnt %p\n", clnt); in p9_fid_create()
905 fid->clnt = clnt; in p9_fid_create()
911 spin_lock_irq(&clnt->lock); in p9_fid_create()
912 ret = idr_alloc_u32(&clnt->fids, fid, &fid->fid, P9_NOFID - 1, in p9_fid_create()
914 spin_unlock_irq(&clnt->lock); in p9_fid_create()
925 struct p9_client *clnt; in p9_fid_destroy() local
929 clnt = fid->clnt; in p9_fid_destroy()
930 spin_lock_irqsave(&clnt->lock, flags); in p9_fid_destroy()
931 idr_remove(&clnt->fids, fid->fid); in p9_fid_destroy()
932 spin_unlock_irqrestore(&clnt->lock, flags); in p9_fid_destroy()
1007 struct p9_client *clnt; in p9_client_create() local
1011 clnt = kmalloc(sizeof(struct p9_client), GFP_KERNEL); in p9_client_create()
1012 if (!clnt) in p9_client_create()
1015 clnt->trans_mod = NULL; in p9_client_create()
1016 clnt->trans = NULL; in p9_client_create()
1017 clnt->fcall_cache = NULL; in p9_client_create()
1020 memcpy(clnt->name, client_id, strlen(client_id) + 1); in p9_client_create()
1022 spin_lock_init(&clnt->lock); in p9_client_create()
1023 idr_init(&clnt->fids); in p9_client_create()
1024 idr_init(&clnt->reqs); in p9_client_create()
1026 err = parse_opts(options, clnt); in p9_client_create()
1030 if (!clnt->trans_mod) in p9_client_create()
1031 clnt->trans_mod = v9fs_get_default_trans(); in p9_client_create()
1033 if (clnt->trans_mod == NULL) { in p9_client_create()
1041 clnt, clnt->trans_mod, clnt->msize, clnt->proto_version); in p9_client_create()
1043 err = clnt->trans_mod->create(clnt, dev_name, options); in p9_client_create()
1047 if (clnt->msize > clnt->trans_mod->maxsize) in p9_client_create()
1048 clnt->msize = clnt->trans_mod->maxsize; in p9_client_create()
1050 if (clnt->msize < 4096) { in p9_client_create()
1057 err = p9_client_version(clnt); in p9_client_create()
1064 clnt->fcall_cache = in p9_client_create()
1065 kmem_cache_create_usercopy("9p-fcall-cache", clnt->msize, in p9_client_create()
1067 clnt->msize - (P9_HDRSZ + 4), in p9_client_create()
1070 return clnt; in p9_client_create()
1073 clnt->trans_mod->close(clnt); in p9_client_create()
1075 v9fs_put_trans(clnt->trans_mod); in p9_client_create()
1077 kfree(clnt); in p9_client_create()
1082 void p9_client_destroy(struct p9_client *clnt) in p9_client_destroy() argument
1087 p9_debug(P9_DEBUG_MUX, "clnt %p\n", clnt); in p9_client_destroy()
1089 if (clnt->trans_mod) in p9_client_destroy()
1090 clnt->trans_mod->close(clnt); in p9_client_destroy()
1092 v9fs_put_trans(clnt->trans_mod); in p9_client_destroy()
1094 idr_for_each_entry(&clnt->fids, fid, id) { in p9_client_destroy()
1099 p9_tag_cleanup(clnt); in p9_client_destroy()
1101 kmem_cache_destroy(clnt->fcall_cache); in p9_client_destroy()
1102 kfree(clnt); in p9_client_destroy()
1106 void p9_client_disconnect(struct p9_client *clnt) in p9_client_disconnect() argument
1108 p9_debug(P9_DEBUG_9P, "clnt %p\n", clnt); in p9_client_disconnect()
1109 clnt->status = Disconnected; in p9_client_disconnect()
1113 void p9_client_begin_disconnect(struct p9_client *clnt) in p9_client_begin_disconnect() argument
1115 p9_debug(P9_DEBUG_9P, "clnt %p\n", clnt); in p9_client_begin_disconnect()
1116 clnt->status = BeginDisconnect; in p9_client_begin_disconnect()
1120 struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid, in p9_client_attach() argument
1131 fid = p9_fid_create(clnt); in p9_client_attach()
1138 req = p9_client_rpc(clnt, P9_TATTACH, "ddss?u", fid->fid, in p9_client_attach()
1145 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", &qid); in p9_client_attach()
1147 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_attach()
1148 p9_tag_remove(clnt, req); in p9_client_attach()
1157 p9_tag_remove(clnt, req); in p9_client_attach()
1171 struct p9_client *clnt; in p9_client_walk() local
1179 clnt = oldfid->clnt; in p9_client_walk()
1181 fid = p9_fid_create(clnt); in p9_client_walk()
1194 req = p9_client_rpc(clnt, P9_TWALK, "ddT", oldfid->fid, fid->fid, in p9_client_walk()
1201 err = p9pdu_readf(&req->rc, clnt->proto_version, "R", &nwqids, &wqids); in p9_client_walk()
1203 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_walk()
1204 p9_tag_remove(clnt, req); in p9_client_walk()
1207 p9_tag_remove(clnt, req); in p9_client_walk()
1246 struct p9_client *clnt; in p9_client_open() local
1251 clnt = fid->clnt; in p9_client_open()
1253 p9_is_proto_dotl(clnt) ? "TLOPEN" : "TOPEN", fid->fid, mode); in p9_client_open()
1259 if (p9_is_proto_dotl(clnt)) in p9_client_open()
1260 req = p9_client_rpc(clnt, P9_TLOPEN, "dd", fid->fid, mode); in p9_client_open()
1262 req = p9_client_rpc(clnt, P9_TOPEN, "db", fid->fid, mode); in p9_client_open()
1268 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", &qid, &iounit); in p9_client_open()
1270 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_open()
1275 p9_is_proto_dotl(clnt) ? "RLOPEN" : "ROPEN", qid.type, in p9_client_open()
1283 p9_tag_remove(clnt, req); in p9_client_open()
1293 struct p9_client *clnt; in p9_client_create_dotl() local
1301 clnt = ofid->clnt; in p9_client_create_dotl()
1306 req = p9_client_rpc(clnt, P9_TLCREATE, "dsddg", ofid->fid, name, flags, in p9_client_create_dotl()
1313 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", qid, &iounit); in p9_client_create_dotl()
1315 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_create_dotl()
1329 p9_tag_remove(clnt, req); in p9_client_create_dotl()
1339 struct p9_client *clnt; in p9_client_fcreate() local
1347 clnt = fid->clnt; in p9_client_fcreate()
1352 req = p9_client_rpc(clnt, P9_TCREATE, "dsdb?s", fid->fid, name, perm, in p9_client_fcreate()
1359 err = p9pdu_readf(&req->rc, clnt->proto_version, "Qd", &qid, &iounit); in p9_client_fcreate()
1361 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_fcreate()
1375 p9_tag_remove(clnt, req); in p9_client_fcreate()
1385 struct p9_client *clnt; in p9_client_symlink() local
1390 clnt = dfid->clnt; in p9_client_symlink()
1392 req = p9_client_rpc(clnt, P9_TSYMLINK, "dssg", dfid->fid, name, symtgt, in p9_client_symlink()
1399 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_symlink()
1401 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_symlink()
1409 p9_tag_remove(clnt, req); in p9_client_symlink()
1417 struct p9_client *clnt; in p9_client_link() local
1422 clnt = dfid->clnt; in p9_client_link()
1423 req = p9_client_rpc(clnt, P9_TLINK, "dds", dfid->fid, oldfid->fid, in p9_client_link()
1429 p9_tag_remove(clnt, req); in p9_client_link()
1437 struct p9_client *clnt; in p9_client_fsync() local
1443 clnt = fid->clnt; in p9_client_fsync()
1445 req = p9_client_rpc(clnt, P9_TFSYNC, "dd", fid->fid, datasync); in p9_client_fsync()
1453 p9_tag_remove(clnt, req); in p9_client_fsync()
1463 struct p9_client *clnt; in p9_client_clunk() local
1480 clnt = fid->clnt; in p9_client_clunk()
1482 req = p9_client_rpc(clnt, P9_TCLUNK, "d", fid->fid); in p9_client_clunk()
1490 p9_tag_remove(clnt, req); in p9_client_clunk()
1509 struct p9_client *clnt; in p9_client_remove() local
1514 clnt = fid->clnt; in p9_client_remove()
1516 req = p9_client_rpc(clnt, P9_TREMOVE, "d", fid->fid); in p9_client_remove()
1524 p9_tag_remove(clnt, req); in p9_client_remove()
1538 struct p9_client *clnt; in p9_client_unlinkat() local
1543 clnt = dfid->clnt; in p9_client_unlinkat()
1544 req = p9_client_rpc(clnt, P9_TUNLINKAT, "dsd", dfid->fid, name, flags); in p9_client_unlinkat()
1551 p9_tag_remove(clnt, req); in p9_client_unlinkat()
1580 struct p9_client *clnt = fid->clnt; in p9_client_read_once() local
1591 if (!rsize || rsize > clnt->msize - P9_IOHDRSZ) in p9_client_read_once()
1592 rsize = clnt->msize - P9_IOHDRSZ; in p9_client_read_once()
1598 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_read_once()
1602 req = p9_client_zc_rpc(clnt, P9_TREAD, to, NULL, rsize, in p9_client_read_once()
1607 req = p9_client_rpc(clnt, P9_TREAD, "dqd", fid->fid, offset, in p9_client_read_once()
1615 *err = p9pdu_readf(&req->rc, clnt->proto_version, in p9_client_read_once()
1618 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_read_once()
1619 p9_tag_remove(clnt, req); in p9_client_read_once()
1634 p9_tag_remove(clnt, req); in p9_client_read_once()
1640 p9_tag_remove(clnt, req); in p9_client_read_once()
1648 struct p9_client *clnt = fid->clnt; in p9_client_write() local
1660 if (!rsize || rsize > clnt->msize-P9_IOHDRSZ) in p9_client_write()
1661 rsize = clnt->msize - P9_IOHDRSZ; in p9_client_write()
1667 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_write()
1668 req = p9_client_zc_rpc(clnt, P9_TWRITE, NULL, from, 0, in p9_client_write()
1672 req = p9_client_rpc(clnt, P9_TWRITE, "dqV", fid->fid, in p9_client_write()
1680 *err = p9pdu_readf(&req->rc, clnt->proto_version, "d", &count); in p9_client_write()
1682 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_write()
1683 p9_tag_remove(clnt, req); in p9_client_write()
1693 p9_tag_remove(clnt, req); in p9_client_write()
1705 struct p9_client *clnt; in p9_client_stat() local
1716 clnt = fid->clnt; in p9_client_stat()
1718 req = p9_client_rpc(clnt, P9_TSTAT, "d", fid->fid); in p9_client_stat()
1724 err = p9pdu_readf(&req->rc, clnt->proto_version, "wS", &ignored, ret); in p9_client_stat()
1726 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_stat()
1727 p9_tag_remove(clnt, req); in p9_client_stat()
1744 p9_tag_remove(clnt, req); in p9_client_stat()
1757 struct p9_client *clnt; in p9_client_getattr_dotl() local
1769 clnt = fid->clnt; in p9_client_getattr_dotl()
1771 req = p9_client_rpc(clnt, P9_TGETATTR, "dq", fid->fid, request_mask); in p9_client_getattr_dotl()
1777 err = p9pdu_readf(&req->rc, clnt->proto_version, "A", ret); in p9_client_getattr_dotl()
1779 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_getattr_dotl()
1780 p9_tag_remove(clnt, req); in p9_client_getattr_dotl()
1805 p9_tag_remove(clnt, req); in p9_client_getattr_dotl()
1847 struct p9_client *clnt; in p9_client_wstat() local
1850 clnt = fid->clnt; in p9_client_wstat()
1851 wst->size = p9_client_statsize(wst, clnt->proto_version); in p9_client_wstat()
1866 req = p9_client_rpc(clnt, P9_TWSTAT, "dwS", fid->fid, wst->size+2, wst); in p9_client_wstat()
1874 p9_tag_remove(clnt, req); in p9_client_wstat()
1884 struct p9_client *clnt; in p9_client_setattr() local
1887 clnt = fid->clnt; in p9_client_setattr()
1899 req = p9_client_rpc(clnt, P9_TSETATTR, "dI", fid->fid, p9attr); in p9_client_setattr()
1906 p9_tag_remove(clnt, req); in p9_client_setattr()
1916 struct p9_client *clnt; in p9_client_statfs() local
1919 clnt = fid->clnt; in p9_client_statfs()
1923 req = p9_client_rpc(clnt, P9_TSTATFS, "d", fid->fid); in p9_client_statfs()
1929 err = p9pdu_readf(&req->rc, clnt->proto_version, "ddqqqqqqd", &sb->type, in p9_client_statfs()
1933 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_statfs()
1934 p9_tag_remove(clnt, req); in p9_client_statfs()
1945 p9_tag_remove(clnt, req); in p9_client_statfs()
1956 struct p9_client *clnt; in p9_client_rename() local
1959 clnt = fid->clnt; in p9_client_rename()
1964 req = p9_client_rpc(clnt, P9_TRENAME, "dds", fid->fid, in p9_client_rename()
1973 p9_tag_remove(clnt, req); in p9_client_rename()
1984 struct p9_client *clnt; in p9_client_renameat() local
1987 clnt = olddirfid->clnt; in p9_client_renameat()
1993 req = p9_client_rpc(clnt, P9_TRENAMEAT, "dsds", olddirfid->fid, in p9_client_renameat()
2003 p9_tag_remove(clnt, req); in p9_client_renameat()
2017 struct p9_client *clnt; in p9_client_xattrwalk() local
2021 clnt = file_fid->clnt; in p9_client_xattrwalk()
2022 attr_fid = p9_fid_create(clnt); in p9_client_xattrwalk()
2031 req = p9_client_rpc(clnt, P9_TXATTRWALK, "dds", in p9_client_xattrwalk()
2037 err = p9pdu_readf(&req->rc, clnt->proto_version, "q", attr_size); in p9_client_xattrwalk()
2039 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_xattrwalk()
2040 p9_tag_remove(clnt, req); in p9_client_xattrwalk()
2043 p9_tag_remove(clnt, req); in p9_client_xattrwalk()
2063 struct p9_client *clnt; in p9_client_xattrcreate() local
2069 clnt = fid->clnt; in p9_client_xattrcreate()
2070 req = p9_client_rpc(clnt, P9_TXATTRCREATE, "dsqd", in p9_client_xattrcreate()
2077 p9_tag_remove(clnt, req); in p9_client_xattrcreate()
2086 struct p9_client *clnt; in p9_client_readdir() local
2098 clnt = fid->clnt; in p9_client_readdir()
2101 if (!rsize || rsize > clnt->msize-P9_READDIRHDRSZ) in p9_client_readdir()
2102 rsize = clnt->msize - P9_READDIRHDRSZ; in p9_client_readdir()
2108 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_readdir()
2113 req = p9_client_zc_rpc(clnt, P9_TREADDIR, &to, NULL, rsize, 0, in p9_client_readdir()
2117 req = p9_client_rpc(clnt, P9_TREADDIR, "dqd", fid->fid, in p9_client_readdir()
2125 err = p9pdu_readf(&req->rc, clnt->proto_version, "D", &count, &dataptr); in p9_client_readdir()
2127 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_readdir()
2140 p9_tag_remove(clnt, req); in p9_client_readdir()
2144 p9_tag_remove(clnt, req); in p9_client_readdir()
2154 struct p9_client *clnt; in p9_client_mknod_dotl() local
2158 clnt = fid->clnt; in p9_client_mknod_dotl()
2161 req = p9_client_rpc(clnt, P9_TMKNOD, "dsdddg", fid->fid, name, mode, in p9_client_mknod_dotl()
2166 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_mknod_dotl()
2168 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_mknod_dotl()
2175 p9_tag_remove(clnt, req); in p9_client_mknod_dotl()
2185 struct p9_client *clnt; in p9_client_mkdir_dotl() local
2189 clnt = fid->clnt; in p9_client_mkdir_dotl()
2192 req = p9_client_rpc(clnt, P9_TMKDIR, "dsdg", fid->fid, name, mode, in p9_client_mkdir_dotl()
2197 err = p9pdu_readf(&req->rc, clnt->proto_version, "Q", qid); in p9_client_mkdir_dotl()
2199 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_mkdir_dotl()
2206 p9_tag_remove(clnt, req); in p9_client_mkdir_dotl()
2215 struct p9_client *clnt; in p9_client_lock_dotl() local
2219 clnt = fid->clnt; in p9_client_lock_dotl()
2225 req = p9_client_rpc(clnt, P9_TLOCK, "dbdqqds", fid->fid, flock->type, in p9_client_lock_dotl()
2232 err = p9pdu_readf(&req->rc, clnt->proto_version, "b", status); in p9_client_lock_dotl()
2234 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_lock_dotl()
2239 p9_tag_remove(clnt, req); in p9_client_lock_dotl()
2248 struct p9_client *clnt; in p9_client_getlock_dotl() local
2252 clnt = fid->clnt; in p9_client_getlock_dotl()
2257 req = p9_client_rpc(clnt, P9_TGETLOCK, "dbqqds", fid->fid, glock->type, in p9_client_getlock_dotl()
2263 err = p9pdu_readf(&req->rc, clnt->proto_version, "bqqds", &glock->type, in p9_client_getlock_dotl()
2267 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_getlock_dotl()
2274 p9_tag_remove(clnt, req); in p9_client_getlock_dotl()
2282 struct p9_client *clnt; in p9_client_readlink() local
2286 clnt = fid->clnt; in p9_client_readlink()
2289 req = p9_client_rpc(clnt, P9_TREADLINK, "d", fid->fid); in p9_client_readlink()
2293 err = p9pdu_readf(&req->rc, clnt->proto_version, "s", target); in p9_client_readlink()
2295 trace_9p_protocol_dump(clnt, &req->rc); in p9_client_readlink()
2300 p9_tag_remove(clnt, req); in p9_client_readlink()