aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorM. Mohan Kumar <mohan@in.ibm.com>2010-09-28 10:29:25 -0400
committerEric Van Hensbergen <ericvh@gmail.com>2010-10-28 10:08:48 -0400
commit329176cc2c50e63c580ddaabb385876db5af1360 (patch)
treec7a95364c6339f75d37e1b63890d94114cd1935e /net
parent368c09d2a303c39e9f37193b23e945e6754cf0a7 (diff)
9p: Implement TREADLINK operation for 9p2000.L
Synopsis size[4] TReadlink tag[2] fid[4] size[4] RReadlink tag[2] target[s] Description Readlink is used to return the contents of the symoblic link referred by fid. Contents of symboic link is returned as a response. target[s] - Contents of the symbolic link referred by fid. Signed-off-by: M. Mohan Kumar <mohan@in.ibm.com> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'net')
-rw-r--r--net/9p/client.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/net/9p/client.c b/net/9p/client.c
index fc1b0579016a..2bc99e9031e7 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -1870,3 +1870,29 @@ error:
1870 return err; 1870 return err;
1871} 1871}
1872EXPORT_SYMBOL(p9_client_getlock_dotl); 1872EXPORT_SYMBOL(p9_client_getlock_dotl);
1873
1874int p9_client_readlink(struct p9_fid *fid, char **target)
1875{
1876 int err;
1877 struct p9_client *clnt;
1878 struct p9_req_t *req;
1879
1880 err = 0;
1881 clnt = fid->clnt;
1882 P9_DPRINTK(P9_DEBUG_9P, ">>> TREADLINK fid %d\n", fid->fid);
1883
1884 req = p9_client_rpc(clnt, P9_TREADLINK, "d", fid->fid);
1885 if (IS_ERR(req))
1886 return PTR_ERR(req);
1887
1888 err = p9pdu_readf(req->rc, clnt->proto_version, "s", target);
1889 if (err) {
1890 p9pdu_dump(1, req->rc);
1891 goto error;
1892 }
1893 P9_DPRINTK(P9_DEBUG_9P, "<<< RREADLINK target %s\n", *target);
1894error:
1895 p9_free_req(clnt, req);
1896 return err;
1897}
1898EXPORT_SYMBOL(p9_client_readlink);