linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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

* [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 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 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

* 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: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).