Lines Matching refs:clnt
69 inline int p9_is_proto_dotl(struct p9_client *clnt) in p9_is_proto_dotl() argument
71 return clnt->proto_version == p9_proto_2000L; in p9_is_proto_dotl()
75 inline int p9_is_proto_dotu(struct p9_client *clnt) in p9_is_proto_dotu() argument
77 return clnt->proto_version == p9_proto_2000u; in p9_is_proto_dotu()
81 int p9_show_client_options(struct seq_file *m, struct p9_client *clnt) in p9_show_client_options() argument
83 if (clnt->msize != 8192) in p9_show_client_options()
84 seq_printf(m, ",msize=%u", clnt->msize); in p9_show_client_options()
85 seq_printf(m, ",trans=%s", clnt->trans_mod->name); in p9_show_client_options()
87 switch (clnt->proto_version) { in p9_show_client_options()
99 if (clnt->trans_mod->show_options) in p9_show_client_options()
100 return clnt->trans_mod->show_options(m, clnt); in p9_show_client_options()
147 static int parse_opts(char *opts, struct p9_client *clnt) in parse_opts() argument
156 clnt->proto_version = p9_proto_2000L; in parse_opts()
157 clnt->msize = 8192; in parse_opts()
184 clnt->msize = option; in parse_opts()
195 v9fs_put_trans(clnt->trans_mod); in parse_opts()
196 clnt->trans_mod = v9fs_get_trans_by_name(s); in parse_opts()
197 if (clnt->trans_mod == NULL) { in parse_opts()
205 clnt->proto_version = p9_proto_legacy; in parse_opts()
219 clnt->proto_version = r; in parse_opts()
229 v9fs_put_trans(clnt->trans_mod); in parse_opts()
906 static struct p9_fid *p9_fid_create(struct p9_client *clnt) in p9_fid_create() argument
911 p9_debug(P9_DEBUG_FID, "clnt %p\n", clnt); in p9_fid_create()
919 fid->clnt = clnt; in p9_fid_create()
924 spin_lock_irq(&clnt->lock); in p9_fid_create()
925 ret = idr_alloc_u32(&clnt->fids, fid, &fid->fid, P9_NOFID - 1, in p9_fid_create()
927 spin_unlock_irq(&clnt->lock); in p9_fid_create()
939 struct p9_client *clnt; in p9_fid_destroy() local
943 clnt = fid->clnt; in p9_fid_destroy()
944 spin_lock_irqsave(&clnt->lock, flags); in p9_fid_destroy()
945 idr_remove(&clnt->fids, fid->fid); in p9_fid_destroy()
946 spin_unlock_irqrestore(&clnt->lock, flags); in p9_fid_destroy()
1013 struct p9_client *clnt; in p9_client_create() local
1017 clnt = kmalloc(sizeof(struct p9_client), GFP_KERNEL); in p9_client_create()
1018 if (!clnt) in p9_client_create()
1021 clnt->trans_mod = NULL; in p9_client_create()
1022 clnt->trans = NULL; in p9_client_create()
1025 memcpy(clnt->name, client_id, strlen(client_id) + 1); in p9_client_create()
1027 spin_lock_init(&clnt->lock); in p9_client_create()
1028 idr_init(&clnt->fids); in p9_client_create()
1030 err = p9_tag_init(clnt); in p9_client_create()
1034 err = parse_opts(options, clnt); in p9_client_create()
1038 if (!clnt->trans_mod) in p9_client_create()
1039 clnt->trans_mod = v9fs_get_default_trans(); in p9_client_create()
1041 if (clnt->trans_mod == NULL) { in p9_client_create()
1049 clnt, clnt->trans_mod, clnt->msize, clnt->proto_version); in p9_client_create()
1051 err = clnt->trans_mod->create(clnt, dev_name, options); in p9_client_create()
1055 if (clnt->msize > clnt->trans_mod->maxsize) in p9_client_create()
1056 clnt->msize = clnt->trans_mod->maxsize; in p9_client_create()
1058 err = p9_client_version(clnt); in p9_client_create()
1062 return clnt; in p9_client_create()
1065 clnt->trans_mod->close(clnt); in p9_client_create()
1067 v9fs_put_trans(clnt->trans_mod); in p9_client_create()
1069 p9_idpool_destroy(clnt->tagpool); in p9_client_create()
1071 kfree(clnt); in p9_client_create()
1076 void p9_client_destroy(struct p9_client *clnt) in p9_client_destroy() argument
1081 p9_debug(P9_DEBUG_MUX, "clnt %p\n", clnt); in p9_client_destroy()
1083 if (clnt->trans_mod) in p9_client_destroy()
1084 clnt->trans_mod->close(clnt); in p9_client_destroy()
1086 v9fs_put_trans(clnt->trans_mod); in p9_client_destroy()
1088 idr_for_each_entry(&clnt->fids, fid, id) { in p9_client_destroy()
1093 p9_tag_cleanup(clnt); in p9_client_destroy()
1095 kfree(clnt); in p9_client_destroy()
1099 void p9_client_disconnect(struct p9_client *clnt) in p9_client_disconnect() argument
1101 p9_debug(P9_DEBUG_9P, "clnt %p\n", clnt); in p9_client_disconnect()
1102 clnt->status = Disconnected; in p9_client_disconnect()
1106 void p9_client_begin_disconnect(struct p9_client *clnt) in p9_client_begin_disconnect() argument
1108 p9_debug(P9_DEBUG_9P, "clnt %p\n", clnt); in p9_client_begin_disconnect()
1109 clnt->status = BeginDisconnect; in p9_client_begin_disconnect()
1113 struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid, in p9_client_attach() argument
1124 fid = p9_fid_create(clnt); in p9_client_attach()
1131 req = p9_client_rpc(clnt, P9_TATTACH, "ddss?u", fid->fid, in p9_client_attach()
1138 err = p9pdu_readf(req->rc, clnt->proto_version, "Q", &qid); in p9_client_attach()
1140 trace_9p_protocol_dump(clnt, req->rc); in p9_client_attach()
1141 p9_free_req(clnt, req); in p9_client_attach()
1150 p9_free_req(clnt, req); in p9_client_attach()
1164 struct p9_client *clnt; in p9_client_walk() local
1172 clnt = oldfid->clnt; in p9_client_walk()
1174 fid = p9_fid_create(clnt); in p9_client_walk()
1188 req = p9_client_rpc(clnt, P9_TWALK, "ddT", oldfid->fid, fid->fid, in p9_client_walk()
1195 err = p9pdu_readf(req->rc, clnt->proto_version, "R", &nwqids, &wqids); in p9_client_walk()
1197 trace_9p_protocol_dump(clnt, req->rc); in p9_client_walk()
1198 p9_free_req(clnt, req); in p9_client_walk()
1201 p9_free_req(clnt, req); in p9_client_walk()
1240 struct p9_client *clnt; in p9_client_open() local
1245 clnt = fid->clnt; in p9_client_open()
1247 p9_is_proto_dotl(clnt) ? "TLOPEN" : "TOPEN", fid->fid, mode); in p9_client_open()
1253 if (p9_is_proto_dotl(clnt)) in p9_client_open()
1254 req = p9_client_rpc(clnt, P9_TLOPEN, "dd", fid->fid, mode); in p9_client_open()
1256 req = p9_client_rpc(clnt, P9_TOPEN, "db", fid->fid, mode); in p9_client_open()
1262 err = p9pdu_readf(req->rc, clnt->proto_version, "Qd", &qid, &iounit); in p9_client_open()
1264 trace_9p_protocol_dump(clnt, req->rc); in p9_client_open()
1269 p9_is_proto_dotl(clnt) ? "RLOPEN" : "ROPEN", qid.type, in p9_client_open()
1276 p9_free_req(clnt, req); in p9_client_open()
1286 struct p9_client *clnt; in p9_client_create_dotl() local
1294 clnt = ofid->clnt; in p9_client_create_dotl()
1299 req = p9_client_rpc(clnt, P9_TLCREATE, "dsddg", ofid->fid, name, flags, in p9_client_create_dotl()
1306 err = p9pdu_readf(req->rc, clnt->proto_version, "Qd", qid, &iounit); in p9_client_create_dotl()
1308 trace_9p_protocol_dump(clnt, req->rc); in p9_client_create_dotl()
1321 p9_free_req(clnt, req); in p9_client_create_dotl()
1331 struct p9_client *clnt; in p9_client_fcreate() local
1339 clnt = fid->clnt; in p9_client_fcreate()
1344 req = p9_client_rpc(clnt, P9_TCREATE, "dsdb?s", fid->fid, name, perm, in p9_client_fcreate()
1351 err = p9pdu_readf(req->rc, clnt->proto_version, "Qd", &qid, &iounit); in p9_client_fcreate()
1353 trace_9p_protocol_dump(clnt, req->rc); in p9_client_fcreate()
1366 p9_free_req(clnt, req); in p9_client_fcreate()
1376 struct p9_client *clnt; in p9_client_symlink() local
1381 clnt = dfid->clnt; in p9_client_symlink()
1383 req = p9_client_rpc(clnt, P9_TSYMLINK, "dssg", dfid->fid, name, symtgt, in p9_client_symlink()
1390 err = p9pdu_readf(req->rc, clnt->proto_version, "Q", qid); in p9_client_symlink()
1392 trace_9p_protocol_dump(clnt, req->rc); in p9_client_symlink()
1400 p9_free_req(clnt, req); in p9_client_symlink()
1408 struct p9_client *clnt; in p9_client_link() local
1413 clnt = dfid->clnt; in p9_client_link()
1414 req = p9_client_rpc(clnt, P9_TLINK, "dds", dfid->fid, oldfid->fid, in p9_client_link()
1420 p9_free_req(clnt, req); in p9_client_link()
1428 struct p9_client *clnt; in p9_client_fsync() local
1434 clnt = fid->clnt; in p9_client_fsync()
1436 req = p9_client_rpc(clnt, P9_TFSYNC, "dd", fid->fid, datasync); in p9_client_fsync()
1444 p9_free_req(clnt, req); in p9_client_fsync()
1454 struct p9_client *clnt; in p9_client_clunk() local
1469 clnt = fid->clnt; in p9_client_clunk()
1471 req = p9_client_rpc(clnt, P9_TCLUNK, "d", fid->fid); in p9_client_clunk()
1479 p9_free_req(clnt, req); in p9_client_clunk()
1498 struct p9_client *clnt; in p9_client_remove() local
1503 clnt = fid->clnt; in p9_client_remove()
1505 req = p9_client_rpc(clnt, P9_TREMOVE, "d", fid->fid); in p9_client_remove()
1513 p9_free_req(clnt, req); in p9_client_remove()
1527 struct p9_client *clnt; in p9_client_unlinkat() local
1532 clnt = dfid->clnt; in p9_client_unlinkat()
1533 req = p9_client_rpc(clnt, P9_TUNLINKAT, "dsd", dfid->fid, name, flags); in p9_client_unlinkat()
1540 p9_free_req(clnt, req); in p9_client_unlinkat()
1549 struct p9_client *clnt = fid->clnt; in p9_client_read() local
1563 if (!rsize || rsize > clnt->msize-P9_IOHDRSZ) in p9_client_read()
1564 rsize = clnt->msize - P9_IOHDRSZ; in p9_client_read()
1570 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_read()
1575 req = p9_client_zc_rpc(clnt, P9_TREAD, to, NULL, rsize, in p9_client_read()
1580 req = p9_client_rpc(clnt, P9_TREAD, "dqd", fid->fid, offset, in p9_client_read()
1588 *err = p9pdu_readf(req->rc, clnt->proto_version, in p9_client_read()
1591 trace_9p_protocol_dump(clnt, req->rc); in p9_client_read()
1592 p9_free_req(clnt, req); in p9_client_read()
1602 p9_free_req(clnt, req); in p9_client_read()
1612 p9_free_req(clnt, req); in p9_client_read()
1620 p9_free_req(clnt, req); in p9_client_read()
1629 struct p9_client *clnt = fid->clnt; in p9_client_write() local
1641 if (!rsize || rsize > clnt->msize-P9_IOHDRSZ) in p9_client_write()
1642 rsize = clnt->msize - P9_IOHDRSZ; in p9_client_write()
1648 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_write()
1649 req = p9_client_zc_rpc(clnt, P9_TWRITE, NULL, from, 0, in p9_client_write()
1653 req = p9_client_rpc(clnt, P9_TWRITE, "dqV", fid->fid, in p9_client_write()
1661 *err = p9pdu_readf(req->rc, clnt->proto_version, "d", &count); in p9_client_write()
1663 trace_9p_protocol_dump(clnt, req->rc); in p9_client_write()
1664 p9_free_req(clnt, req); in p9_client_write()
1674 p9_free_req(clnt, req); in p9_client_write()
1686 struct p9_client *clnt; in p9_client_stat() local
1697 clnt = fid->clnt; in p9_client_stat()
1699 req = p9_client_rpc(clnt, P9_TSTAT, "d", fid->fid); in p9_client_stat()
1705 err = p9pdu_readf(req->rc, clnt->proto_version, "wS", &ignored, ret); in p9_client_stat()
1707 trace_9p_protocol_dump(clnt, req->rc); in p9_client_stat()
1708 p9_free_req(clnt, req); in p9_client_stat()
1725 p9_free_req(clnt, req); in p9_client_stat()
1738 struct p9_client *clnt; in p9_client_getattr_dotl() local
1750 clnt = fid->clnt; in p9_client_getattr_dotl()
1752 req = p9_client_rpc(clnt, P9_TGETATTR, "dq", fid->fid, request_mask); in p9_client_getattr_dotl()
1758 err = p9pdu_readf(req->rc, clnt->proto_version, "A", ret); in p9_client_getattr_dotl()
1760 trace_9p_protocol_dump(clnt, req->rc); in p9_client_getattr_dotl()
1761 p9_free_req(clnt, req); in p9_client_getattr_dotl()
1786 p9_free_req(clnt, req); in p9_client_getattr_dotl()
1828 struct p9_client *clnt; in p9_client_wstat() local
1831 clnt = fid->clnt; in p9_client_wstat()
1832 wst->size = p9_client_statsize(wst, clnt->proto_version); in p9_client_wstat()
1847 req = p9_client_rpc(clnt, P9_TWSTAT, "dwS", fid->fid, wst->size+2, wst); in p9_client_wstat()
1855 p9_free_req(clnt, req); in p9_client_wstat()
1865 struct p9_client *clnt; in p9_client_setattr() local
1868 clnt = fid->clnt; in p9_client_setattr()
1880 req = p9_client_rpc(clnt, P9_TSETATTR, "dI", fid->fid, p9attr); in p9_client_setattr()
1887 p9_free_req(clnt, req); in p9_client_setattr()
1897 struct p9_client *clnt; in p9_client_statfs() local
1900 clnt = fid->clnt; in p9_client_statfs()
1904 req = p9_client_rpc(clnt, P9_TSTATFS, "d", fid->fid); in p9_client_statfs()
1910 err = p9pdu_readf(req->rc, clnt->proto_version, "ddqqqqqqd", &sb->type, in p9_client_statfs()
1914 trace_9p_protocol_dump(clnt, req->rc); in p9_client_statfs()
1915 p9_free_req(clnt, req); in p9_client_statfs()
1926 p9_free_req(clnt, req); in p9_client_statfs()
1937 struct p9_client *clnt; in p9_client_rename() local
1940 clnt = fid->clnt; in p9_client_rename()
1945 req = p9_client_rpc(clnt, P9_TRENAME, "dds", fid->fid, in p9_client_rename()
1954 p9_free_req(clnt, req); in p9_client_rename()
1965 struct p9_client *clnt; in p9_client_renameat() local
1968 clnt = olddirfid->clnt; in p9_client_renameat()
1974 req = p9_client_rpc(clnt, P9_TRENAMEAT, "dsds", olddirfid->fid, in p9_client_renameat()
1984 p9_free_req(clnt, req); in p9_client_renameat()
1998 struct p9_client *clnt; in p9_client_xattrwalk() local
2002 clnt = file_fid->clnt; in p9_client_xattrwalk()
2003 attr_fid = p9_fid_create(clnt); in p9_client_xattrwalk()
2012 req = p9_client_rpc(clnt, P9_TXATTRWALK, "dds", in p9_client_xattrwalk()
2018 err = p9pdu_readf(req->rc, clnt->proto_version, "q", attr_size); in p9_client_xattrwalk()
2020 trace_9p_protocol_dump(clnt, req->rc); in p9_client_xattrwalk()
2021 p9_free_req(clnt, req); in p9_client_xattrwalk()
2024 p9_free_req(clnt, req); in p9_client_xattrwalk()
2044 struct p9_client *clnt; in p9_client_xattrcreate() local
2050 clnt = fid->clnt; in p9_client_xattrcreate()
2051 req = p9_client_rpc(clnt, P9_TXATTRCREATE, "dsqd", in p9_client_xattrcreate()
2058 p9_free_req(clnt, req); in p9_client_xattrcreate()
2067 struct p9_client *clnt; in p9_client_readdir() local
2079 clnt = fid->clnt; in p9_client_readdir()
2082 if (!rsize || rsize > clnt->msize-P9_READDIRHDRSZ) in p9_client_readdir()
2083 rsize = clnt->msize - P9_READDIRHDRSZ; in p9_client_readdir()
2089 if (clnt->trans_mod->zc_request && rsize > 1024) { in p9_client_readdir()
2094 req = p9_client_zc_rpc(clnt, P9_TREADDIR, &to, NULL, rsize, 0, in p9_client_readdir()
2098 req = p9_client_rpc(clnt, P9_TREADDIR, "dqd", fid->fid, in p9_client_readdir()
2106 err = p9pdu_readf(req->rc, clnt->proto_version, "D", &count, &dataptr); in p9_client_readdir()
2108 trace_9p_protocol_dump(clnt, req->rc); in p9_client_readdir()
2121 p9_free_req(clnt, req); in p9_client_readdir()
2125 p9_free_req(clnt, req); in p9_client_readdir()
2135 struct p9_client *clnt; in p9_client_mknod_dotl() local
2139 clnt = fid->clnt; in p9_client_mknod_dotl()
2142 req = p9_client_rpc(clnt, P9_TMKNOD, "dsdddg", fid->fid, name, mode, in p9_client_mknod_dotl()
2147 err = p9pdu_readf(req->rc, clnt->proto_version, "Q", qid); in p9_client_mknod_dotl()
2149 trace_9p_protocol_dump(clnt, req->rc); in p9_client_mknod_dotl()
2156 p9_free_req(clnt, req); in p9_client_mknod_dotl()
2166 struct p9_client *clnt; in p9_client_mkdir_dotl() local
2170 clnt = fid->clnt; in p9_client_mkdir_dotl()
2173 req = p9_client_rpc(clnt, P9_TMKDIR, "dsdg", fid->fid, name, mode, in p9_client_mkdir_dotl()
2178 err = p9pdu_readf(req->rc, clnt->proto_version, "Q", qid); in p9_client_mkdir_dotl()
2180 trace_9p_protocol_dump(clnt, req->rc); in p9_client_mkdir_dotl()
2187 p9_free_req(clnt, req); in p9_client_mkdir_dotl()
2196 struct p9_client *clnt; in p9_client_lock_dotl() local
2200 clnt = fid->clnt; in p9_client_lock_dotl()
2206 req = p9_client_rpc(clnt, P9_TLOCK, "dbdqqds", fid->fid, flock->type, in p9_client_lock_dotl()
2213 err = p9pdu_readf(req->rc, clnt->proto_version, "b", status); in p9_client_lock_dotl()
2215 trace_9p_protocol_dump(clnt, req->rc); in p9_client_lock_dotl()
2220 p9_free_req(clnt, req); in p9_client_lock_dotl()
2229 struct p9_client *clnt; in p9_client_getlock_dotl() local
2233 clnt = fid->clnt; in p9_client_getlock_dotl()
2238 req = p9_client_rpc(clnt, P9_TGETLOCK, "dbqqds", fid->fid, glock->type, in p9_client_getlock_dotl()
2244 err = p9pdu_readf(req->rc, clnt->proto_version, "bqqds", &glock->type, in p9_client_getlock_dotl()
2248 trace_9p_protocol_dump(clnt, req->rc); in p9_client_getlock_dotl()
2255 p9_free_req(clnt, req); in p9_client_getlock_dotl()
2263 struct p9_client *clnt; in p9_client_readlink() local
2267 clnt = fid->clnt; in p9_client_readlink()
2270 req = p9_client_rpc(clnt, P9_TREADLINK, "d", fid->fid); in p9_client_readlink()
2274 err = p9pdu_readf(req->rc, clnt->proto_version, "s", target); in p9_client_readlink()
2276 trace_9p_protocol_dump(clnt, req->rc); in p9_client_readlink()
2281 p9_free_req(clnt, req); in p9_client_readlink()