On Thu, 13 Oct 2016 03:09:41 -0700 Li Qiang <liq...@gmail.com> wrote:
> From: Li Qiang <liqiang...@360.cn> > > Currently, 9pfs sets the 'copied_len' field in V9fsXattr > to -1 to tag xattr walk fid. As the 'copied_len' is also > used to account for copied bytes, this may make confusion. This patch > add a bool 'xattrwalk_fid' to tag the xattr walk fid. > > Suggested-by: Greg Kurz <gr...@kaod.org> > Signed-off-by: Li Qiang <liqiang...@360.cn> > --- > Reviewed-by: Greg Kurz <gr...@kaod.org> > Changes since the v1: > -move 'xattrwalk_fid' to 'V9fsXattr' struct. > -add detailed changelog. > > hw/9pfs/9p.c | 7 ++++--- > hw/9pfs/9p.h | 1 + > 2 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c > index e4040dc..e902eed 100644 > --- a/hw/9pfs/9p.c > +++ b/hw/9pfs/9p.c > @@ -325,7 +325,7 @@ static int v9fs_xattr_fid_clunk(V9fsPDU *pdu, > V9fsFidState *fidp) > { > int retval = 0; > > - if (fidp->fs.xattr.copied_len == -1) { > + if (fidp->fs.xattr.xattrwalk_fid) { > /* getxattr/listxattr fid */ > goto free_value; > } > @@ -3189,7 +3189,7 @@ static void v9fs_xattrwalk(void *opaque) > */ > xattr_fidp->fs.xattr.len = size; > xattr_fidp->fid_type = P9_FID_XATTR; > - xattr_fidp->fs.xattr.copied_len = -1; > + xattr_fidp->fs.xattr.xattrwalk_fid = true; > if (size) { > xattr_fidp->fs.xattr.value = g_malloc(size); > err = v9fs_co_llistxattr(pdu, &xattr_fidp->path, > @@ -3222,7 +3222,7 @@ static void v9fs_xattrwalk(void *opaque) > */ > xattr_fidp->fs.xattr.len = size; > xattr_fidp->fid_type = P9_FID_XATTR; > - xattr_fidp->fs.xattr.copied_len = -1; > + xattr_fidp->fs.xattr.xattrwalk_fid = true; > if (size) { > xattr_fidp->fs.xattr.value = g_malloc(size); > err = v9fs_co_lgetxattr(pdu, &xattr_fidp->path, > @@ -3278,6 +3278,7 @@ static void v9fs_xattrcreate(void *opaque) > xattr_fidp = file_fidp; > xattr_fidp->fid_type = P9_FID_XATTR; > xattr_fidp->fs.xattr.copied_len = 0; > + xattr_fidp->fs.xattr.xattrwalk_fid = false; > xattr_fidp->fs.xattr.len = size; > xattr_fidp->fs.xattr.flags = flags; > v9fs_string_init(&xattr_fidp->fs.xattr.name); > diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h > index d539d2e..aa18da1 100644 > --- a/hw/9pfs/9p.h > +++ b/hw/9pfs/9p.h > @@ -164,6 +164,7 @@ typedef struct V9fsXattr > void *value; > V9fsString name; > int flags; > + bool xattrwalk_fid; > } V9fsXattr; > > typedef struct V9fsDir {