mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs: 9p: Optimize TCREATE by eliminating a redundant fid clone. 9p: cleanup: remove unneeded assignment 9p: Add mksock support fs/9p: Make sure we properly instantiate dentry. 9p: add 9P2000.L rename operation 9p: add 9P2000.L statfs operation 9p: VFS switches for 9p2000.L: VFS switches 9p: VFS switches for 9p2000.L: protocol and client changes
This commit is contained in:
commit
4fd5ec509b
9 changed files with 261 additions and 33 deletions
|
|
@ -1321,7 +1321,8 @@ static int p9_client_statsize(struct p9_wstat *wst, int proto_version)
|
|||
if (wst->muid)
|
||||
ret += strlen(wst->muid);
|
||||
|
||||
if (proto_version == p9_proto_2000u) {
|
||||
if ((proto_version == p9_proto_2000u) ||
|
||||
(proto_version == p9_proto_2000L)) {
|
||||
ret += 2+4+4+4; /* extension[s] n_uid[4] n_gid[4] n_muid[4] */
|
||||
if (wst->extension)
|
||||
ret += strlen(wst->extension);
|
||||
|
|
@ -1364,3 +1365,70 @@ error:
|
|||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(p9_client_wstat);
|
||||
|
||||
int p9_client_statfs(struct p9_fid *fid, struct p9_rstatfs *sb)
|
||||
{
|
||||
int err;
|
||||
struct p9_req_t *req;
|
||||
struct p9_client *clnt;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
P9_DPRINTK(P9_DEBUG_9P, ">>> TSTATFS fid %d\n", fid->fid);
|
||||
|
||||
req = p9_client_rpc(clnt, P9_TSTATFS, "d", fid->fid);
|
||||
if (IS_ERR(req)) {
|
||||
err = PTR_ERR(req);
|
||||
goto error;
|
||||
}
|
||||
|
||||
err = p9pdu_readf(req->rc, clnt->proto_version, "ddqqqqqqd", &sb->type,
|
||||
&sb->bsize, &sb->blocks, &sb->bfree, &sb->bavail,
|
||||
&sb->files, &sb->ffree, &sb->fsid, &sb->namelen);
|
||||
if (err) {
|
||||
p9pdu_dump(1, req->rc);
|
||||
p9_free_req(clnt, req);
|
||||
goto error;
|
||||
}
|
||||
|
||||
P9_DPRINTK(P9_DEBUG_9P, "<<< RSTATFS fid %d type 0x%lx bsize %ld "
|
||||
"blocks %llu bfree %llu bavail %llu files %llu ffree %llu "
|
||||
"fsid %llu namelen %ld\n",
|
||||
fid->fid, (long unsigned int)sb->type, (long int)sb->bsize,
|
||||
sb->blocks, sb->bfree, sb->bavail, sb->files, sb->ffree,
|
||||
sb->fsid, (long int)sb->namelen);
|
||||
|
||||
p9_free_req(clnt, req);
|
||||
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);
|
||||
|
||||
|
|
|
|||
|
|
@ -341,7 +341,8 @@ p9pdu_vreadf(struct p9_fcall *pdu, int proto_version, const char *fmt,
|
|||
}
|
||||
break;
|
||||
case '?':
|
||||
if (proto_version != p9_proto_2000u)
|
||||
if ((proto_version != p9_proto_2000u) &&
|
||||
(proto_version != p9_proto_2000L))
|
||||
return 0;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -488,7 +489,8 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt,
|
|||
}
|
||||
break;
|
||||
case '?':
|
||||
if (proto_version != p9_proto_2000u)
|
||||
if ((proto_version != p9_proto_2000u) &&
|
||||
(proto_version != p9_proto_2000L))
|
||||
return 0;
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
Loading…
Reference in a new issue