Message ID | 1382384878-12788-1-git-send-email-geyslan@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
2013/10/21 Geyslan G. Bem <geyslan@gmail.com>: > In case of error in the p9_client_write, the function v9fs_fid_xattr_set > should return its negative value, what was never being done. > > In case of success it only retuned 0. Now it returns the 'offset' > variable (write_count total). > > Signed-off-by: Geyslan G. Bem <geyslan@gmail.com> > --- > fs/9p/xattr.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/fs/9p/xattr.c b/fs/9p/xattr.c > index 3c28cdf..04133a1 100644 > --- a/fs/9p/xattr.c > +++ b/fs/9p/xattr.c > @@ -138,8 +138,7 @@ int v9fs_fid_xattr_set(struct p9_fid *fid, const char *name, > if (retval < 0) { > p9_debug(P9_DEBUG_VFS, "p9_client_xattrcreate failed %d\n", > retval); > - p9_client_clunk(fid); > - return retval; > + goto err; > } > msize = fid->clnt->msize; > while (value_len) { > @@ -152,12 +151,15 @@ int v9fs_fid_xattr_set(struct p9_fid *fid, const char *name, > if (write_count < 0) { > /* error in xattr write */ > retval = write_count; > - break; > + goto err; > } > offset += write_count; > value_len -= write_count; > } > - return p9_client_clunk(fid); > + retval = offset; > +err: > + p9_client_clunk(fid); > + return retval; > } > > ssize_t v9fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size) > -- > 1.8.4 > Eric, As you can see, I modified the success return value to the offset (write_count sum), following the same principle of v9fs_fid_xattr_get(): http://lxr.free-electrons.com/source/fs/9p/xattr.c#L65 What do you think? Regards. ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
diff --git a/fs/9p/xattr.c b/fs/9p/xattr.c index 3c28cdf..04133a1 100644 --- a/fs/9p/xattr.c +++ b/fs/9p/xattr.c @@ -138,8 +138,7 @@ int v9fs_fid_xattr_set(struct p9_fid *fid, const char *name, if (retval < 0) { p9_debug(P9_DEBUG_VFS, "p9_client_xattrcreate failed %d\n", retval); - p9_client_clunk(fid); - return retval; + goto err; } msize = fid->clnt->msize; while (value_len) { @@ -152,12 +151,15 @@ int v9fs_fid_xattr_set(struct p9_fid *fid, const char *name, if (write_count < 0) { /* error in xattr write */ retval = write_count; - break; + goto err; } offset += write_count; value_len -= write_count; } - return p9_client_clunk(fid); + retval = offset; +err: + p9_client_clunk(fid); + return retval; } ssize_t v9fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)
In case of error in the p9_client_write, the function v9fs_fid_xattr_set should return its negative value, what was never being done. In case of success it only retuned 0. Now it returns the 'offset' variable (write_count total). Signed-off-by: Geyslan G. Bem <geyslan@gmail.com> --- fs/9p/xattr.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)