xfs: remove the ATTR_INCOMPLETE flag
authorChristoph Hellwig <hch@lst.de>
Thu, 27 Feb 2020 01:30:29 +0000 (17:30 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Tue, 3 Mar 2020 04:55:52 +0000 (20:55 -0800)
Replace the ATTR_INCOMPLETE flag with a new boolean field in struct
xfs_attr_list_context.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_attr.h
fs/xfs/scrub/attr.c
fs/xfs/xfs_attr_list.c

index 4243b22..71bcf12 100644 (file)
@@ -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 */
index d9f0dd4..d804558 100644 (file)
@@ -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;
 
        /*
index d37743b..f7c4f6b 100644 (file)
@@ -452,8 +452,8 @@ xfs_attr3_leaf_list_int(
                }
 
                if ((entry->flags & XFS_ATTR_INCOMPLETE) &&
-                   !(context->flags & ATTR_INCOMPLETE))
-                       continue;               /* skip incomplete entries */
+                   !context->allow_incomplete)
+                       continue;
 
                if (entry->flags & XFS_ATTR_LOCAL) {
                        xfs_attr_leaf_name_local_t *name_loc;
@@ -632,10 +632,6 @@ xfs_attr_list(
            (cursor->hashval || cursor->blkno || cursor->offset))
                return -EINVAL;
 
-       /* Only internal consumers can retrieve incomplete attrs. */
-       if (flags & ATTR_INCOMPLETE)
-               return -EINVAL;
-
        /*
         * Check for a properly aligned buffer.
         */