* [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open @ 2010-10-05 17:01 Aneesh Kumar K.V 2010-10-05 17:01 ` [PATCH 2/3] fs/9p: Add missing iput in v9fs_vfs_lookup Aneesh Kumar K.V ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: Aneesh Kumar K.V @ 2010-10-05 17:01 UTC (permalink / raw) To: v9fs-developer; +Cc: linux-fsdevel, linux-kernel, Aneesh Kumar K.V We need this so that we can support regular file creation with mknod Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> --- fs/9p/v9fs.h | 2 ++ fs/9p/vfs_inode.c | 13 +++++++------ include/net/9p/client.h | 2 +- net/9p/client.c | 6 +++--- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/fs/9p/v9fs.h b/fs/9p/v9fs.h index 8bb7792..6209a29 100644 --- a/fs/9p/v9fs.h +++ b/fs/9p/v9fs.h @@ -126,6 +126,8 @@ void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses); #define V9FS_DEFUID (-2) #define V9FS_DEFGID (-2) +#define P9_LOOKUP_OPEN 0x1 + static inline struct v9fs_session_info *v9fs_inode2v9ses(struct inode *inode) { return (inode->i_sb->s_fs_info); diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 2f904a8..1ec9075 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -668,8 +668,9 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, int err = 0; char *name = NULL; gid_t gid; - int flags; + int flags = 0; mode_t mode; + int lookup_flags = 0; struct v9fs_session_info *v9ses; struct p9_fid *fid = NULL; struct p9_fid *dfid, *ofid; @@ -679,11 +680,10 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, struct posix_acl *pacl = NULL, *dacl = NULL; v9ses = v9fs_inode2v9ses(dir); - if (nd && nd->flags & LOOKUP_OPEN) + if (nd && nd->flags & LOOKUP_OPEN) { flags = nd->intent.open.flags - 1; - else - flags = O_RDWR; - + lookup_flags = P9_LOOKUP_OPEN; + } name = (char *) dentry->d_name.name; P9_DPRINTK(P9_DEBUG_VFS, "v9fs_vfs_create_dotl: name:%s flags:0x%x " "mode:0x%x\n", name, flags, omode); @@ -713,7 +713,8 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, "Failed to get acl values in creat %d\n", err); goto error; } - err = p9_client_create_dotl(ofid, name, flags, mode, gid, &qid); + err = p9_client_create_dotl(ofid, name, flags, mode, + gid, lookup_flags, &qid); if (err < 0) { P9_DPRINTK(P9_DEBUG_VFS, "p9_client_open_dotl failed in creat %d\n", diff --git a/include/net/9p/client.h b/include/net/9p/client.h index fb358f5..b0b97ec 100644 --- a/include/net/9p/client.h +++ b/include/net/9p/client.h @@ -230,7 +230,7 @@ int p9_client_link(struct p9_fid *fid, struct p9_fid *oldfid, char *newname); int p9_client_symlink(struct p9_fid *fid, char *name, char *symname, gid_t gid, struct p9_qid *qid); int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, - gid_t gid, struct p9_qid *qid); + gid_t gid, int lookup_flags, struct p9_qid *qid); int p9_client_clunk(struct p9_fid *fid); int p9_client_remove(struct p9_fid *fid); int p9_client_read(struct p9_fid *fid, char *data, char __user *udata, diff --git a/net/9p/client.c b/net/9p/client.c index 4b90b82..9950275 100644 --- a/net/9p/client.c +++ b/net/9p/client.c @@ -1070,7 +1070,7 @@ error: EXPORT_SYMBOL(p9_client_open); int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, - gid_t gid, struct p9_qid *qid) + gid_t gid, int lookup_flags, struct p9_qid *qid) { int err = 0; struct p9_client *clnt; @@ -1085,8 +1085,8 @@ int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, if (ofid->mode != -1) return -EINVAL; - req = p9_client_rpc(clnt, P9_TLCREATE, "dsddd", ofid->fid, name, flags, - mode, gid); + req = p9_client_rpc(clnt, P9_TLCREATE, "dsdddd", ofid->fid, name, flags, + mode, gid, lookup_flags); if (IS_ERR(req)) { err = PTR_ERR(req); goto error; -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/3] fs/9p: Add missing iput in v9fs_vfs_lookup 2010-10-05 17:01 [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Aneesh Kumar K.V @ 2010-10-05 17:01 ` Aneesh Kumar K.V 2010-10-05 23:29 ` [V9fs-developer] " Venkateswararao Jujjuri (JV) 2010-10-05 17:01 ` [PATCH 3/3] fs/9p: Use generic_file_open with lookup_instantiate_filp Aneesh Kumar K.V 2010-10-05 17:15 ` [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Eric Van Hensbergen 2 siblings, 1 reply; 11+ messages in thread From: Aneesh Kumar K.V @ 2010-10-05 17:01 UTC (permalink / raw) To: v9fs-developer; +Cc: linux-fsdevel, linux-kernel, Aneesh Kumar K.V Make sure we drop inode reference in the error path Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> --- fs/9p/vfs_inode.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 1ec9075..1ac9229 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -1028,7 +1028,7 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry, result = v9fs_fid_add(dentry, fid); if (result < 0) - goto error; + goto error_iput; inst_out: if (v9ses->cache) @@ -1039,6 +1039,8 @@ inst_out: d_add(dentry, inode); return NULL; +error_iput: + iput(inode); error: p9_client_clunk(fid); -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [V9fs-developer] [PATCH 2/3] fs/9p: Add missing iput in v9fs_vfs_lookup 2010-10-05 17:01 ` [PATCH 2/3] fs/9p: Add missing iput in v9fs_vfs_lookup Aneesh Kumar K.V @ 2010-10-05 23:29 ` Venkateswararao Jujjuri (JV) 0 siblings, 0 replies; 11+ messages in thread From: Venkateswararao Jujjuri (JV) @ 2010-10-05 23:29 UTC (permalink / raw) To: Aneesh Kumar K.V; +Cc: v9fs-developer, linux-fsdevel, linux-kernel On 10/5/2010 10:01 AM, Aneesh Kumar K.V wrote: > Make sure we drop inode reference in the error path > > Signed-off-by: Aneesh Kumar K.V<aneesh.kumar@linux.vnet.ibm.com> Looks good to me. Reviewed-by : Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> > --- > fs/9p/vfs_inode.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c > index 1ec9075..1ac9229 100644 > --- a/fs/9p/vfs_inode.c > +++ b/fs/9p/vfs_inode.c > @@ -1028,7 +1028,7 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry, > > result = v9fs_fid_add(dentry, fid); > if (result< 0) > - goto error; > + goto error_iput; > > inst_out: > if (v9ses->cache) > @@ -1039,6 +1039,8 @@ inst_out: > d_add(dentry, inode); > return NULL; > > +error_iput: > + iput(inode); > error: > p9_client_clunk(fid); > ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/3] fs/9p: Use generic_file_open with lookup_instantiate_filp 2010-10-05 17:01 [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Aneesh Kumar K.V 2010-10-05 17:01 ` [PATCH 2/3] fs/9p: Add missing iput in v9fs_vfs_lookup Aneesh Kumar K.V @ 2010-10-05 17:01 ` Aneesh Kumar K.V 2010-10-05 23:30 ` [V9fs-developer] " Venkateswararao Jujjuri (JV) 2010-10-05 17:15 ` [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Eric Van Hensbergen 2 siblings, 1 reply; 11+ messages in thread From: Aneesh Kumar K.V @ 2010-10-05 17:01 UTC (permalink / raw) To: v9fs-developer; +Cc: linux-fsdevel, linux-kernel, Aneesh Kumar K.V We need to do O_LARGEFILE check even in case of 9p. Use the generic_file_open helper Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> --- fs/9p/vfs_inode.c | 11 ++--------- 1 files changed, 2 insertions(+), 9 deletions(-) diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 1ac9229..44ce77d 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -560,13 +560,6 @@ static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir) return retval; } -static int -v9fs_open_created(struct inode *inode, struct file *file) -{ - return 0; -} - - /** * v9fs_create - Create a file * @v9ses: session information @@ -766,7 +759,7 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, /* if we are opening a file, assign the open fid to the file */ if (nd && nd->flags & LOOKUP_OPEN) { - filp = lookup_instantiate_filp(nd, dentry, v9fs_open_created); + filp = lookup_instantiate_filp(nd, dentry, generic_file_open); if (IS_ERR(filp)) { p9_client_clunk(ofid); return PTR_ERR(filp); @@ -825,7 +818,7 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode, /* if we are opening a file, assign the open fid to the file */ if (nd && nd->flags & LOOKUP_OPEN) { - filp = lookup_instantiate_filp(nd, dentry, v9fs_open_created); + filp = lookup_instantiate_filp(nd, dentry, generic_file_open); if (IS_ERR(filp)) { err = PTR_ERR(filp); goto error; -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [V9fs-developer] [PATCH 3/3] fs/9p: Use generic_file_open with lookup_instantiate_filp 2010-10-05 17:01 ` [PATCH 3/3] fs/9p: Use generic_file_open with lookup_instantiate_filp Aneesh Kumar K.V @ 2010-10-05 23:30 ` Venkateswararao Jujjuri (JV) 0 siblings, 0 replies; 11+ messages in thread From: Venkateswararao Jujjuri (JV) @ 2010-10-05 23:30 UTC (permalink / raw) To: Aneesh Kumar K.V; +Cc: v9fs-developer, linux-fsdevel, linux-kernel On 10/5/2010 10:01 AM, Aneesh Kumar K.V wrote: > We need to do O_LARGEFILE check even in case of 9p. Use the > generic_file_open helper > > Signed-off-by: Aneesh Kumar K.V<aneesh.kumar@linux.vnet.ibm.com> Looks good to me Reviewed by : Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> > --- > fs/9p/vfs_inode.c | 11 ++--------- > 1 files changed, 2 insertions(+), 9 deletions(-) > > diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c > index 1ac9229..44ce77d 100644 > --- a/fs/9p/vfs_inode.c > +++ b/fs/9p/vfs_inode.c > @@ -560,13 +560,6 @@ static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir) > return retval; > } > > -static int > -v9fs_open_created(struct inode *inode, struct file *file) > -{ > - return 0; > -} > - > - > /** > * v9fs_create - Create a file > * @v9ses: session information > @@ -766,7 +759,7 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, > > /* if we are opening a file, assign the open fid to the file */ > if (nd&& nd->flags& LOOKUP_OPEN) { > - filp = lookup_instantiate_filp(nd, dentry, v9fs_open_created); > + filp = lookup_instantiate_filp(nd, dentry, generic_file_open); > if (IS_ERR(filp)) { > p9_client_clunk(ofid); > return PTR_ERR(filp); > @@ -825,7 +818,7 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode, > > /* if we are opening a file, assign the open fid to the file */ > if (nd&& nd->flags& LOOKUP_OPEN) { > - filp = lookup_instantiate_filp(nd, dentry, v9fs_open_created); > + filp = lookup_instantiate_filp(nd, dentry, generic_file_open); > if (IS_ERR(filp)) { > err = PTR_ERR(filp); > goto error; ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open 2010-10-05 17:01 [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Aneesh Kumar K.V 2010-10-05 17:01 ` [PATCH 2/3] fs/9p: Add missing iput in v9fs_vfs_lookup Aneesh Kumar K.V 2010-10-05 17:01 ` [PATCH 3/3] fs/9p: Use generic_file_open with lookup_instantiate_filp Aneesh Kumar K.V @ 2010-10-05 17:15 ` Eric Van Hensbergen 2010-10-05 18:19 ` Venkateswararao Jujjuri (JV) 2010-10-06 6:18 ` Aneesh Kumar K. V 2 siblings, 2 replies; 11+ messages in thread From: Eric Van Hensbergen @ 2010-10-05 17:15 UTC (permalink / raw) To: Aneesh Kumar K.V; +Cc: v9fs-developer, linux-fsdevel, linux-kernel Ouch. Protocol change. Also - not sure I understand what's going on here. Why does mknod go through TLCREATE, shouldn't we have our own protocol messages for mknod?// Why add an additional flag field instead of just using the existing flags field since we are only talking about a bit? -eric On Tue, Oct 5, 2010 at 1:01 PM, Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> wrote: > We need this so that we can support regular file creation > with mknod > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> > --- > fs/9p/v9fs.h | 2 ++ > fs/9p/vfs_inode.c | 13 +++++++------ > include/net/9p/client.h | 2 +- > net/9p/client.c | 6 +++--- > 4 files changed, 13 insertions(+), 10 deletions(-) > > diff --git a/fs/9p/v9fs.h b/fs/9p/v9fs.h > index 8bb7792..6209a29 100644 > --- a/fs/9p/v9fs.h > +++ b/fs/9p/v9fs.h > @@ -126,6 +126,8 @@ void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses); > #define V9FS_DEFUID (-2) > #define V9FS_DEFGID (-2) > > +#define P9_LOOKUP_OPEN 0x1 > + > static inline struct v9fs_session_info *v9fs_inode2v9ses(struct inode *inode) > { > return (inode->i_sb->s_fs_info); > diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c > index 2f904a8..1ec9075 100644 > --- a/fs/9p/vfs_inode.c > +++ b/fs/9p/vfs_inode.c > @@ -668,8 +668,9 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, > int err = 0; > char *name = NULL; > gid_t gid; > - int flags; > + int flags = 0; > mode_t mode; > + int lookup_flags = 0; > struct v9fs_session_info *v9ses; > struct p9_fid *fid = NULL; > struct p9_fid *dfid, *ofid; > @@ -679,11 +680,10 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, > struct posix_acl *pacl = NULL, *dacl = NULL; > > v9ses = v9fs_inode2v9ses(dir); > - if (nd && nd->flags & LOOKUP_OPEN) > + if (nd && nd->flags & LOOKUP_OPEN) { > flags = nd->intent.open.flags - 1; > - else > - flags = O_RDWR; > - > + lookup_flags = P9_LOOKUP_OPEN; > + } > name = (char *) dentry->d_name.name; > P9_DPRINTK(P9_DEBUG_VFS, "v9fs_vfs_create_dotl: name:%s flags:0x%x " > "mode:0x%x\n", name, flags, omode); > @@ -713,7 +713,8 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, > "Failed to get acl values in creat %d\n", err); > goto error; > } > - err = p9_client_create_dotl(ofid, name, flags, mode, gid, &qid); > + err = p9_client_create_dotl(ofid, name, flags, mode, > + gid, lookup_flags, &qid); > if (err < 0) { > P9_DPRINTK(P9_DEBUG_VFS, > "p9_client_open_dotl failed in creat %d\n", > diff --git a/include/net/9p/client.h b/include/net/9p/client.h > index fb358f5..b0b97ec 100644 > --- a/include/net/9p/client.h > +++ b/include/net/9p/client.h > @@ -230,7 +230,7 @@ int p9_client_link(struct p9_fid *fid, struct p9_fid *oldfid, char *newname); > int p9_client_symlink(struct p9_fid *fid, char *name, char *symname, gid_t gid, > struct p9_qid *qid); > int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, > - gid_t gid, struct p9_qid *qid); > + gid_t gid, int lookup_flags, struct p9_qid *qid); > int p9_client_clunk(struct p9_fid *fid); > int p9_client_remove(struct p9_fid *fid); > int p9_client_read(struct p9_fid *fid, char *data, char __user *udata, > diff --git a/net/9p/client.c b/net/9p/client.c > index 4b90b82..9950275 100644 > --- a/net/9p/client.c > +++ b/net/9p/client.c > @@ -1070,7 +1070,7 @@ error: > EXPORT_SYMBOL(p9_client_open); > > int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, > - gid_t gid, struct p9_qid *qid) > + gid_t gid, int lookup_flags, struct p9_qid *qid) > { > int err = 0; > struct p9_client *clnt; > @@ -1085,8 +1085,8 @@ int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, > if (ofid->mode != -1) > return -EINVAL; > > - req = p9_client_rpc(clnt, P9_TLCREATE, "dsddd", ofid->fid, name, flags, > - mode, gid); > + req = p9_client_rpc(clnt, P9_TLCREATE, "dsdddd", ofid->fid, name, flags, > + mode, gid, lookup_flags); > if (IS_ERR(req)) { > err = PTR_ERR(req); > goto error; > -- > 1.7.0.4 > > > ------------------------------------------------------------------------------ > Beautiful is writing same markup. Internet Explorer 9 supports > standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. > Spend less time writing and rewriting code and more time creating great > experiences on the web. Be a part of the beta today. > http://p.sf.net/sfu/beautyoftheweb > _______________________________________________ > V9fs-developer mailing list > V9fs-developer@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/v9fs-developer > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open 2010-10-05 17:15 ` [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Eric Van Hensbergen @ 2010-10-05 18:19 ` Venkateswararao Jujjuri (JV) 2010-10-06 6:18 ` Aneesh Kumar K. V 1 sibling, 0 replies; 11+ messages in thread From: Venkateswararao Jujjuri (JV) @ 2010-10-05 18:19 UTC (permalink / raw) To: Eric Van Hensbergen Cc: Aneesh Kumar K.V, linux-fsdevel, v9fs-developer, linux-kernel On 10/5/2010 10:15 AM, Eric Van Hensbergen wrote: > Ouch. Protocol change. > > Also - not sure I understand what's going on here. Why does mknod go > through TLCREATE, shouldn't we have our > own protocol messages for mknod?// > > Why add an additional flag field instead of just using the existing > flags field since we are only talking about a bit? > > -eric > > > On Tue, Oct 5, 2010 at 1:01 PM, Aneesh Kumar K.V > <aneesh.kumar@linux.vnet.ibm.com> wrote: >> We need this so that we can support regular file creation >> with mknod >> >> Signed-off-by: Aneesh Kumar K.V<aneesh.kumar@linux.vnet.ibm.com> >> --- >> fs/9p/v9fs.h | 2 ++ >> fs/9p/vfs_inode.c | 13 +++++++------ >> include/net/9p/client.h | 2 +- >> net/9p/client.c | 6 +++--- >> 4 files changed, 13 insertions(+), 10 deletions(-) >> >> diff --git a/fs/9p/v9fs.h b/fs/9p/v9fs.h >> index 8bb7792..6209a29 100644 >> --- a/fs/9p/v9fs.h >> +++ b/fs/9p/v9fs.h >> @@ -126,6 +126,8 @@ void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses); >> #define V9FS_DEFUID (-2) >> #define V9FS_DEFGID (-2) >> >> +#define P9_LOOKUP_OPEN 0x1 >> + >> static inline struct v9fs_session_info *v9fs_inode2v9ses(struct inode *inode) >> { >> return (inode->i_sb->s_fs_info); >> diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c >> index 2f904a8..1ec9075 100644 >> --- a/fs/9p/vfs_inode.c >> +++ b/fs/9p/vfs_inode.c >> @@ -668,8 +668,9 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, >> int err = 0; >> char *name = NULL; >> gid_t gid; >> - int flags; >> + int flags = 0; >> mode_t mode; >> + int lookup_flags = 0; I think we decided to send -1 with the flags instead of doing protocol change here. Thanks, JV >> struct v9fs_session_info *v9ses; >> struct p9_fid *fid = NULL; >> struct p9_fid *dfid, *ofid; >> @@ -679,11 +680,10 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, >> struct posix_acl *pacl = NULL, *dacl = NULL; >> >> v9ses = v9fs_inode2v9ses(dir); >> - if (nd&& nd->flags& LOOKUP_OPEN) >> + if (nd&& nd->flags& LOOKUP_OPEN) { >> flags = nd->intent.open.flags - 1; >> - else >> - flags = O_RDWR; >> - >> + lookup_flags = P9_LOOKUP_OPEN; >> + } >> name = (char *) dentry->d_name.name; >> P9_DPRINTK(P9_DEBUG_VFS, "v9fs_vfs_create_dotl: name:%s flags:0x%x " >> "mode:0x%x\n", name, flags, omode); >> @@ -713,7 +713,8 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, >> "Failed to get acl values in creat %d\n", err); >> goto error; >> } >> - err = p9_client_create_dotl(ofid, name, flags, mode, gid,&qid); >> + err = p9_client_create_dotl(ofid, name, flags, mode, >> + gid, lookup_flags,&qid); >> if (err< 0) { >> P9_DPRINTK(P9_DEBUG_VFS, >> "p9_client_open_dotl failed in creat %d\n", >> diff --git a/include/net/9p/client.h b/include/net/9p/client.h >> index fb358f5..b0b97ec 100644 >> --- a/include/net/9p/client.h >> +++ b/include/net/9p/client.h >> @@ -230,7 +230,7 @@ int p9_client_link(struct p9_fid *fid, struct p9_fid *oldfid, char *newname); >> int p9_client_symlink(struct p9_fid *fid, char *name, char *symname, gid_t gid, >> struct p9_qid *qid); >> int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, >> - gid_t gid, struct p9_qid *qid); >> + gid_t gid, int lookup_flags, struct p9_qid *qid); >> int p9_client_clunk(struct p9_fid *fid); >> int p9_client_remove(struct p9_fid *fid); >> int p9_client_read(struct p9_fid *fid, char *data, char __user *udata, >> diff --git a/net/9p/client.c b/net/9p/client.c >> index 4b90b82..9950275 100644 >> --- a/net/9p/client.c >> +++ b/net/9p/client.c >> @@ -1070,7 +1070,7 @@ error: >> EXPORT_SYMBOL(p9_client_open); >> >> int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, >> - gid_t gid, struct p9_qid *qid) >> + gid_t gid, int lookup_flags, struct p9_qid *qid) >> { >> int err = 0; >> struct p9_client *clnt; >> @@ -1085,8 +1085,8 @@ int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, >> if (ofid->mode != -1) >> return -EINVAL; >> >> - req = p9_client_rpc(clnt, P9_TLCREATE, "dsddd", ofid->fid, name, flags, >> - mode, gid); >> + req = p9_client_rpc(clnt, P9_TLCREATE, "dsdddd", ofid->fid, name, flags, >> + mode, gid, lookup_flags); >> if (IS_ERR(req)) { >> err = PTR_ERR(req); >> goto error; >> -- >> 1.7.0.4 >> >> >> ------------------------------------------------------------------------------ >> Beautiful is writing same markup. Internet Explorer 9 supports >> standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2& L3. >> Spend less time writing and rewriting code and more time creating great >> experiences on the web. Be a part of the beta today. >> http://p.sf.net/sfu/beautyoftheweb >> _______________________________________________ >> V9fs-developer mailing list >> V9fs-developer@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/v9fs-developer >> > > ------------------------------------------------------------------------------ > Beautiful is writing same markup. Internet Explorer 9 supports > standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2& L3. > Spend less time writing and rewriting code and more time creating great > experiences on the web. Be a part of the beta today. > http://p.sf.net/sfu/beautyoftheweb > _______________________________________________ > V9fs-developer mailing list > V9fs-developer@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/v9fs-developer ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open 2010-10-05 17:15 ` [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Eric Van Hensbergen 2010-10-05 18:19 ` Venkateswararao Jujjuri (JV) @ 2010-10-06 6:18 ` Aneesh Kumar K. V 2010-10-06 11:03 ` Aneesh Kumar K. V 1 sibling, 1 reply; 11+ messages in thread From: Aneesh Kumar K. V @ 2010-10-06 6:18 UTC (permalink / raw) To: Eric Van Hensbergen; +Cc: v9fs-developer, linux-fsdevel, linux-kernel On Tue, 5 Oct 2010 13:15:42 -0400, Eric Van Hensbergen <ericvh@gmail.com> wrote: > Ouch. Protocol change. > > Also - not sure I understand what's going on here. Why does mknod go > through TLCREATE, shouldn't we have our > own protocol messages for mknod?// This is needed for the below mknod usage mknod("k2", S_IFREG) ; > > Why add an additional flag field instead of just using the existing > flags field since we are only talking about a bit? > TLCREATE is size[4] Tlcreate tag[2] fid[4] name[s] flags[4] mode[4] gid[4] size[4] Rlcreate tag[2] qid[13] iounit[4] The flags argument represent Linux access mode flags with which the caller is requesting to open the file with. Protocol allows all the Linux access Having a -1 with the flag would indicate all the access mode flags are set. So i found that to be ugly. And value 0 indicate O_RDONLY. So was not sure whether -1 in flags or having a separate lookup flags is the right thing to do. -aneesh ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open 2010-10-06 6:18 ` Aneesh Kumar K. V @ 2010-10-06 11:03 ` Aneesh Kumar K. V 2010-10-06 14:18 ` Venkateswararao Jujjuri (JV) 2010-10-06 14:59 ` Eric Van Hensbergen 0 siblings, 2 replies; 11+ messages in thread From: Aneesh Kumar K. V @ 2010-10-06 11:03 UTC (permalink / raw) To: Eric Van Hensbergen; +Cc: v9fs-developer, linux-fsdevel, linux-kernel On Wed, 06 Oct 2010 11:48:15 +0530, "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com> wrote: > On Tue, 5 Oct 2010 13:15:42 -0400, Eric Van Hensbergen <ericvh@gmail.com> wrote: > > Ouch. Protocol change. > > > > Also - not sure I understand what's going on here. Why does mknod go > > through TLCREATE, shouldn't we have our > > own protocol messages for mknod?// > > This is needed for the below mknod usage > > mknod("k2", S_IFREG) ; > > May be a better fix is to make sure we use TLMKNOD instead of TLCREATE in case we get a create without LOOKUP_OPEN flags set. So how about diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 2f904a8..e89754f 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -55,6 +55,10 @@ static const struct inode_operations v9fs_file_inode_operations_dotl; static const struct inode_operations v9fs_symlink_inode_operations; static const struct inode_operations v9fs_symlink_inode_operations_dotl; +static int +v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, int omode, + dev_t rdev); + /** * unixmode2p9mode - convert unix mode bits to plan 9 * @v9ses: v9fs session information @@ -681,8 +685,14 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, v9ses = v9fs_inode2v9ses(dir); if (nd && nd->flags & LOOKUP_OPEN) flags = nd->intent.open.flags - 1; - else - flags = O_RDWR; + else { + /* + * create call without LOOKUP_OPEN is due + * to mknod of regular files. So use mknod + * operation. + */ + return v9fs_vfs_mknod_dotl(dir, dentry, omode, 0); + } name = (char *) dentry->d_name.name; P9_DPRINTK(P9_DEBUG_VFS, "v9fs_vfs_create_dotl: name:%s flags:0x%x " ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open 2010-10-06 11:03 ` Aneesh Kumar K. V @ 2010-10-06 14:18 ` Venkateswararao Jujjuri (JV) 2010-10-06 14:59 ` Eric Van Hensbergen 1 sibling, 0 replies; 11+ messages in thread From: Venkateswararao Jujjuri (JV) @ 2010-10-06 14:18 UTC (permalink / raw) To: Aneesh Kumar K. V Cc: Eric Van Hensbergen, linux-fsdevel, v9fs-developer, linux-kernel On 10/6/2010 4:03 AM, Aneesh Kumar K. V wrote: > On Wed, 06 Oct 2010 11:48:15 +0530, "Aneesh Kumar K. V"<aneesh.kumar@linux.vnet.ibm.com> wrote: >> On Tue, 5 Oct 2010 13:15:42 -0400, Eric Van Hensbergen<ericvh@gmail.com> wrote: >>> Ouch. Protocol change. >>> >>> Also - not sure I understand what's going on here. Why does mknod go >>> through TLCREATE, shouldn't we have our >>> own protocol messages for mknod?// >> >> This is needed for the below mknod usage >> >> mknod("k2", S_IFREG) ; >> >> > > May be a better fix is to make sure we use TLMKNOD instead of TLCREATE > in case we get a create without LOOKUP_OPEN flags set. So how about Yep. This sounds much better. :) - JV > > diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c > index 2f904a8..e89754f 100644 > --- a/fs/9p/vfs_inode.c > +++ b/fs/9p/vfs_inode.c > @@ -55,6 +55,10 @@ static const struct inode_operations v9fs_file_inode_operations_dotl; > static const struct inode_operations v9fs_symlink_inode_operations; > static const struct inode_operations v9fs_symlink_inode_operations_dotl; > > +static int > +v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, int omode, > + dev_t rdev); > + > /** > * unixmode2p9mode - convert unix mode bits to plan 9 > * @v9ses: v9fs session information > @@ -681,8 +685,14 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, > v9ses = v9fs_inode2v9ses(dir); > if (nd&& nd->flags& LOOKUP_OPEN) > flags = nd->intent.open.flags - 1; > - else > - flags = O_RDWR; > + else { > + /* > + * create call without LOOKUP_OPEN is due > + * to mknod of regular files. So use mknod > + * operation. > + */ > + return v9fs_vfs_mknod_dotl(dir, dentry, omode, 0); > + } > > name = (char *) dentry->d_name.name; > P9_DPRINTK(P9_DEBUG_VFS, "v9fs_vfs_create_dotl: name:%s flags:0x%x " > > ------------------------------------------------------------------------------ > Beautiful is writing same markup. Internet Explorer 9 supports > standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2& L3. > Spend less time writing and rewriting code and more time creating great > experiences on the web. Be a part of the beta today. > http://p.sf.net/sfu/beautyoftheweb > _______________________________________________ > V9fs-developer mailing list > V9fs-developer@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/v9fs-developer ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open 2010-10-06 11:03 ` Aneesh Kumar K. V 2010-10-06 14:18 ` Venkateswararao Jujjuri (JV) @ 2010-10-06 14:59 ` Eric Van Hensbergen 1 sibling, 0 replies; 11+ messages in thread From: Eric Van Hensbergen @ 2010-10-06 14:59 UTC (permalink / raw) To: Aneesh Kumar K. V; +Cc: linux-fsdevel, v9fs-developer, linux-kernel On Wed, Oct 6, 2010 at 7:03 AM, Aneesh Kumar K. V <aneesh.kumar@linux.vnet.ibm.com> wrote: > On Wed, 06 Oct 2010 11:48:15 +0530, "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com> wrote: >> On Tue, 5 Oct 2010 13:15:42 -0400, Eric Van Hensbergen <ericvh@gmail.com> wrote: >> > Ouch. Protocol change. >> > >> > Also - not sure I understand what's going on here. Why does mknod go >> > through TLCREATE, shouldn't we have our >> > own protocol messages for mknod?// >> >> This is needed for the below mknod usage >> >> mknod("k2", S_IFREG) ; >> >> > > May be a better fix is to make sure we use TLMKNOD instead of TLCREATE > in case we get a create without LOOKUP_OPEN flags set. So how about > Yes, I think that's the better path. :) -eric > diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c > index 2f904a8..e89754f 100644 > --- a/fs/9p/vfs_inode.c > +++ b/fs/9p/vfs_inode.c > @@ -55,6 +55,10 @@ static const struct inode_operations v9fs_file_inode_operations_dotl; > static const struct inode_operations v9fs_symlink_inode_operations; > static const struct inode_operations v9fs_symlink_inode_operations_dotl; > > +static int > +v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, int omode, > + dev_t rdev); > + > /** > * unixmode2p9mode - convert unix mode bits to plan 9 > * @v9ses: v9fs session information > @@ -681,8 +685,14 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, > v9ses = v9fs_inode2v9ses(dir); > if (nd && nd->flags & LOOKUP_OPEN) > flags = nd->intent.open.flags - 1; > - else > - flags = O_RDWR; > + else { > + /* > + * create call without LOOKUP_OPEN is due > + * to mknod of regular files. So use mknod > + * operation. > + */ > + return v9fs_vfs_mknod_dotl(dir, dentry, omode, 0); > + } > > name = (char *) dentry->d_name.name; > P9_DPRINTK(P9_DEBUG_VFS, "v9fs_vfs_create_dotl: name:%s flags:0x%x " > > ------------------------------------------------------------------------------ > Beautiful is writing same markup. Internet Explorer 9 supports > standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. > Spend less time writing and rewriting code and more time creating great > experiences on the web. Be a part of the beta today. > http://p.sf.net/sfu/beautyoftheweb > _______________________________________________ > V9fs-developer mailing list > V9fs-developer@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/v9fs-developer > ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-10-06 14:59 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-10-05 17:01 [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Aneesh Kumar K.V 2010-10-05 17:01 ` [PATCH 2/3] fs/9p: Add missing iput in v9fs_vfs_lookup Aneesh Kumar K.V 2010-10-05 23:29 ` [V9fs-developer] " Venkateswararao Jujjuri (JV) 2010-10-05 17:01 ` [PATCH 3/3] fs/9p: Use generic_file_open with lookup_instantiate_filp Aneesh Kumar K.V 2010-10-05 23:30 ` [V9fs-developer] " Venkateswararao Jujjuri (JV) 2010-10-05 17:15 ` [V9fs-developer] [PATCH 1/3] fs/9p: Update TLCREATE to allow create without open Eric Van Hensbergen 2010-10-05 18:19 ` Venkateswararao Jujjuri (JV) 2010-10-06 6:18 ` Aneesh Kumar K. V 2010-10-06 11:03 ` Aneesh Kumar K. V 2010-10-06 14:18 ` Venkateswararao Jujjuri (JV) 2010-10-06 14:59 ` Eric Van Hensbergen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).