diff options
author | Latchesar Ionkov <lucho@ionkov.net> | 2006-03-25 03:07:26 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-25 08:22:54 -0800 |
commit | 16cce6d27ef52e00cc124196046bbae7150024c1 (patch) | |
tree | d4494a6a5146fa7314138f674c2928e31c26bcc0 /fs/9p/conv.c | |
parent | 5174fdab9f58181249debab6e959ae4fd4abd0ed (diff) | |
download | linux-3.10-16cce6d27ef52e00cc124196046bbae7150024c1.tar.gz linux-3.10-16cce6d27ef52e00cc124196046bbae7150024c1.tar.bz2 linux-3.10-16cce6d27ef52e00cc124196046bbae7150024c1.zip |
[PATCH] v9fs: add extension field to Tcreate
Implement a new way of creating special files. Instead of Tcreate+Twstat,
add one more field to Tcreate that contains special file description.
Signed-off-by: Latchesar Ionkov <lucho@ionkov.net>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/9p/conv.c')
-rw-r--r-- | fs/9p/conv.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/9p/conv.c b/fs/9p/conv.c index bba81714246..b129079e5f3 100644 --- a/fs/9p/conv.c +++ b/fs/9p/conv.c @@ -666,7 +666,8 @@ struct v9fs_fcall *v9fs_create_topen(u32 fid, u8 mode) return fc; } -struct v9fs_fcall *v9fs_create_tcreate(u32 fid, char *name, u32 perm, u8 mode) +struct v9fs_fcall *v9fs_create_tcreate(u32 fid, char *name, u32 perm, u8 mode, + char *extension, int extended) { int size; struct v9fs_fcall *fc; @@ -674,6 +675,9 @@ struct v9fs_fcall *v9fs_create_tcreate(u32 fid, char *name, u32 perm, u8 mode) struct cbuf *bufp = &buffer; size = 4 + 2 + strlen(name) + 4 + 1; /* fid[4] name[s] perm[4] mode[1] */ + if (extended && extension!=NULL) + size += 2 + strlen(extension); /* extension[s] */ + fc = v9fs_create_common(bufp, size, TCREATE); if (IS_ERR(fc)) goto error; @@ -682,6 +686,8 @@ struct v9fs_fcall *v9fs_create_tcreate(u32 fid, char *name, u32 perm, u8 mode) v9fs_put_str(bufp, name, &fc->params.tcreate.name); v9fs_put_int32(bufp, perm, &fc->params.tcreate.perm); v9fs_put_int8(bufp, mode, &fc->params.tcreate.mode); + if (extended) + v9fs_put_str(bufp, extension, &fc->params.tcreate.extension); if (buf_check_overflow(bufp)) { kfree(fc); |