Commit 5e813574 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong

xfs: remove the ATTR_INCOMPLETE flag

Replace the ATTR_INCOMPLETE flag with a new boolean field in struct
xfs_attr_list_context.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 4d542e4c
...@@ -36,11 +36,10 @@ struct xfs_attr_list_context; ...@@ -36,11 +36,10 @@ struct xfs_attr_list_context;
#define ATTR_KERNOTIME 0x1000 /* [kernel] don't update inode timestamps */ #define ATTR_KERNOTIME 0x1000 /* [kernel] don't update inode timestamps */
#define ATTR_KERNOVAL 0x2000 /* [kernel] get attr size only, not value */ #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_ALLOC 0x8000 /* [kernel] allocate xattr buffer on demand */
#define ATTR_KERNEL_FLAGS \ #define ATTR_KERNEL_FLAGS \
(ATTR_KERNOTIME | ATTR_KERNOVAL | ATTR_INCOMPLETE | ATTR_ALLOC) (ATTR_KERNOTIME | ATTR_KERNOVAL | ATTR_ALLOC)
#define XFS_ATTR_FLAGS \ #define XFS_ATTR_FLAGS \
{ ATTR_DONTFOLLOW, "DONTFOLLOW" }, \ { ATTR_DONTFOLLOW, "DONTFOLLOW" }, \
...@@ -51,7 +50,6 @@ struct xfs_attr_list_context; ...@@ -51,7 +50,6 @@ struct xfs_attr_list_context;
{ ATTR_REPLACE, "REPLACE" }, \ { ATTR_REPLACE, "REPLACE" }, \
{ ATTR_KERNOTIME, "KERNOTIME" }, \ { ATTR_KERNOTIME, "KERNOTIME" }, \
{ ATTR_KERNOVAL, "KERNOVAL" }, \ { ATTR_KERNOVAL, "KERNOVAL" }, \
{ ATTR_INCOMPLETE, "INCOMPLETE" }, \
{ ATTR_ALLOC, "ALLOC" } { ATTR_ALLOC, "ALLOC" }
/* /*
...@@ -123,6 +121,7 @@ typedef struct xfs_attr_list_context { ...@@ -123,6 +121,7 @@ typedef struct xfs_attr_list_context {
* error values to the xfs_attr_list caller. * error values to the xfs_attr_list caller.
*/ */
int seen_enough; int seen_enough;
bool allow_incomplete;
ssize_t count; /* num used entries */ ssize_t count; /* num used entries */
int dupcnt; /* count dup hashvals seen */ int dupcnt; /* count dup hashvals seen */
......
...@@ -497,7 +497,7 @@ xchk_xattr( ...@@ -497,7 +497,7 @@ xchk_xattr(
sx.context.resynch = 1; sx.context.resynch = 1;
sx.context.put_listent = xchk_xattr_listent; sx.context.put_listent = xchk_xattr_listent;
sx.context.tp = sc->tp; sx.context.tp = sc->tp;
sx.context.flags = ATTR_INCOMPLETE; sx.context.allow_incomplete = true;
sx.sc = sc; sx.sc = sc;
/* /*
......
...@@ -452,8 +452,8 @@ xfs_attr3_leaf_list_int( ...@@ -452,8 +452,8 @@ xfs_attr3_leaf_list_int(
} }
if ((entry->flags & XFS_ATTR_INCOMPLETE) && if ((entry->flags & XFS_ATTR_INCOMPLETE) &&
!(context->flags & ATTR_INCOMPLETE)) !context->allow_incomplete)
continue; /* skip incomplete entries */ continue;
if (entry->flags & XFS_ATTR_LOCAL) { if (entry->flags & XFS_ATTR_LOCAL) {
xfs_attr_leaf_name_local_t *name_loc; xfs_attr_leaf_name_local_t *name_loc;
...@@ -632,10 +632,6 @@ xfs_attr_list( ...@@ -632,10 +632,6 @@ xfs_attr_list(
(cursor->hashval || cursor->blkno || cursor->offset)) (cursor->hashval || cursor->blkno || cursor->offset))
return -EINVAL; return -EINVAL;
/* Only internal consumers can retrieve incomplete attrs. */
if (flags & ATTR_INCOMPLETE)
return -EINVAL;
/* /*
* Check for a properly aligned buffer. * Check for a properly aligned buffer.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment