On Mon, Feb 17, 2020 at 01:59:28PM +0100, Christoph Hellwig wrote: > Replace the ATTR_INCOMPLETE flag with a new boolean field in struct > xfs_attr_list_context. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> looks fine. Minor nit below, otherwise Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> > --- > fs/xfs/libxfs/xfs_attr.h | 5 ++--- > fs/xfs/scrub/attr.c | 2 +- > fs/xfs/xfs_attr_list.c | 6 +----- > 3 files changed, 4 insertions(+), 9 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h > index 4243b2272642..71bcf1298e4c 100644 > --- a/fs/xfs/libxfs/xfs_attr.h > +++ b/fs/xfs/libxfs/xfs_attr.h > @@ -36,11 +36,10 @@ struct xfs_attr_list_context; > #define ATTR_KERNOTIME 0x1000 /* [kernel] don't update inode timestamps */ > #define ATTR_KERNOVAL 0x2000 /* [kernel] get attr size only, not value */ > > -#define ATTR_INCOMPLETE 0x4000 /* [kernel] return INCOMPLETE attr keys */ > #define ATTR_ALLOC 0x8000 /* [kernel] allocate xattr buffer on demand */ > > #define ATTR_KERNEL_FLAGS \ > - (ATTR_KERNOTIME | ATTR_KERNOVAL | ATTR_INCOMPLETE | ATTR_ALLOC) > + (ATTR_KERNOTIME | ATTR_KERNOVAL | ATTR_ALLOC) > > #define XFS_ATTR_FLAGS \ > { ATTR_DONTFOLLOW, "DONTFOLLOW" }, \ > @@ -51,7 +50,6 @@ struct xfs_attr_list_context; > { ATTR_REPLACE, "REPLACE" }, \ > { ATTR_KERNOTIME, "KERNOTIME" }, \ > { ATTR_KERNOVAL, "KERNOVAL" }, \ > - { ATTR_INCOMPLETE, "INCOMPLETE" }, \ > { ATTR_ALLOC, "ALLOC" } > > /* > @@ -123,6 +121,7 @@ typedef struct xfs_attr_list_context { > * error values to the xfs_attr_list caller. > */ > int seen_enough; > + bool allow_incomplete; > > ssize_t count; /* num used entries */ > int dupcnt; /* count dup hashvals seen */ > diff --git a/fs/xfs/scrub/attr.c b/fs/xfs/scrub/attr.c > index d9f0dd444b80..d804558cdbca 100644 > --- a/fs/xfs/scrub/attr.c > +++ b/fs/xfs/scrub/attr.c > @@ -497,7 +497,7 @@ xchk_xattr( > sx.context.resynch = 1; > sx.context.put_listent = xchk_xattr_listent; > sx.context.tp = sc->tp; > - sx.context.flags = ATTR_INCOMPLETE; > + sx.context.allow_incomplete = true; > sx.sc = sc; > > /* > diff --git a/fs/xfs/xfs_attr_list.c b/fs/xfs/xfs_attr_list.c > index d37743bdf274..5139ef983cd6 100644 > --- a/fs/xfs/xfs_attr_list.c > +++ b/fs/xfs/xfs_attr_list.c > @@ -452,7 +452,7 @@ xfs_attr3_leaf_list_int( > } > > if ((entry->flags & XFS_ATTR_INCOMPLETE) && > - !(context->flags & ATTR_INCOMPLETE)) > + !context->allow_incomplete) > continue; /* skip incomplete entries */ While touching this code, can you fix the trailing comment here to be a normal one before the if() statement, or remove it because it's largely redundant? Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx