diff options
author | Sripathi Kodi <sripathik@in.ibm.com> | 2010-03-25 12:47:26 +0000 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2010-05-21 16:44:34 -0500 |
commit | 4681dbdacb5cdc4d3273c3a97a1858d6e00a5fe7 (patch) | |
tree | e29be0d9f98caa7ee176cf0a1a3c3a22fca4934d /net/9p/client.c | |
parent | bda8e7752063cdbdd1d308bc1705400a8cec1aeb (diff) | |
download | linux-exynos-4681dbdacb5cdc4d3273c3a97a1858d6e00a5fe7.tar.gz linux-exynos-4681dbdacb5cdc4d3273c3a97a1858d6e00a5fe7.tar.bz2 linux-exynos-4681dbdacb5cdc4d3273c3a97a1858d6e00a5fe7.zip |
9p: add 9P2000.L rename operation
I made a V2 of this patch on top of my patches for VFS switches.
All the changes were due to change in some offsets.
rename - change name of file or directory
size[4] Trename tag[2] fid[4] newdirfid[4] name[s]
size[4] Rrename tag[2]
The rename message is used to change the name of a file, possibly moving it
to a new directory. The 9P wstat message can only rename a file within the
same directory.
Signed-off-by: Jim Garlick <garlick@llnl.gov>
Signed-off-by: Sripathi Kodi <sripathik@in.ibm.com>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'net/9p/client.c')
-rw-r--r-- | net/9p/client.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/net/9p/client.c b/net/9p/client.c index 430a1c4a7c6f..37c8da07a80b 100644 --- a/net/9p/client.c +++ b/net/9p/client.c @@ -1404,3 +1404,31 @@ error: return err; } EXPORT_SYMBOL(p9_client_statfs); + +int p9_client_rename(struct p9_fid *fid, struct p9_fid *newdirfid, char *name) +{ + int err; + struct p9_req_t *req; + struct p9_client *clnt; + + err = 0; + clnt = fid->clnt; + + P9_DPRINTK(P9_DEBUG_9P, ">>> TRENAME fid %d newdirfid %d name %s\n", + fid->fid, newdirfid->fid, name); + + req = p9_client_rpc(clnt, P9_TRENAME, "dds", fid->fid, + newdirfid->fid, name); + if (IS_ERR(req)) { + err = PTR_ERR(req); + goto error; + } + + P9_DPRINTK(P9_DEBUG_9P, "<<< RRENAME fid %d\n", fid->fid); + + p9_free_req(clnt, req); +error: + return err; +} +EXPORT_SYMBOL(p9_client_rename); + |