Re: [PATCH 08/29] xfs: move struct xfs_da_args to xfs_types.h

Darrick J. Wong
2020-01-21T18:48:49Z

On Tue, Jan 14, 2020 at 09:10:30AM +0100, Christoph Hellwig wrote:
> To allow passing a struct xfs_da_args to the high-level attr helpers
> it needs to be easily includable by files like xfs_xattr.c. Move the
> struct definition to xfs_types.h to allow for that.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Looks ok,
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

--D

> ---
> fs/xfs/libxfs/xfs_da_btree.h | 64 ------------------------------------
> fs/xfs/libxfs/xfs_types.h | 60 +++++++++++++++++++++++++++++++++
> 2 files changed, 60 insertions(+), 64 deletions(-)
>
> diff --git a/fs/xfs/libxfs/xfs_da_btree.h b/fs/xfs/libxfs/xfs_da_btree.h
> index 0f4fbb0889ff..dd2f48b8ee07 100644
> --- a/fs/xfs/libxfs/xfs_da_btree.h
> +++ b/fs/xfs/libxfs/xfs_da_btree.h
> @@ -36,70 +36,6 @@ struct xfs_da_geometry {
> size_t data_entry_offset;
> };
>
> -/*========================================================================
> - * Btree searching and modification structure definitions.
> - *========================================================================*/
> -
> -/*
> - * Search comparison results
> - */
> -enum xfs_dacmp {
> - XFS_CMP_DIFFERENT, /* names are completely different */
> - XFS_CMP_EXACT, /* names are exactly the same */
> - XFS_CMP_CASE /* names are same but differ in case */
> -};
> -
> -/*
> - * Structure to ease passing around component names.
> - */
> -typedef struct xfs_da_args {
> - struct xfs_da_geometry *geo; /* da block geometry */
> - const uint8_t *name; /* string (maybe not NULL terminated) */
> - int namelen; /* length of string (maybe no NULL) */
> - uint8_t filetype; /* filetype of inode for directories */
> - uint8_t *value; /* set of bytes (maybe contain NULLs) */
> - int valuelen; /* length of value */
> - int flags; /* argument flags (eg: ATTR_NOCREATE) */
> - xfs_dahash_t hashval; /* hash value of name */
> - xfs_ino_t inumber; /* input/output inode number */
> - struct xfs_inode *dp; /* directory inode to manipulate */
> - struct xfs_trans *trans; /* current trans (changes over time) */
> - xfs_extlen_t total; /* total blocks needed, for 1st bmap */
> - int whichfork; /* data or attribute fork */
> - xfs_dablk_t blkno; /* blkno of attr leaf of interest */
> - int index; /* index of attr of interest in blk */
> - xfs_dablk_t rmtblkno; /* remote attr value starting blkno */
> - int rmtblkcnt; /* remote attr value block count */
> - int rmtvaluelen; /* remote attr value length in bytes */
> - xfs_dablk_t blkno2; /* blkno of 2nd attr leaf of interest */
> - int index2; /* index of 2nd attr in blk */
> - xfs_dablk_t rmtblkno2; /* remote attr value starting blkno */
> - int rmtblkcnt2; /* remote attr value block count */
> - int rmtvaluelen2; /* remote attr value length in bytes */
> - int op_flags; /* operation flags */
> - enum xfs_dacmp cmpresult; /* name compare result for lookups */
> -} xfs_da_args_t;
> -
> -/*
> - * Operation flags:
> - */
> -#define XFS_DA_OP_JUSTCHECK 0x0001 /* check for ok with no space */
> -#define XFS_DA_OP_RENAME 0x0002 /* this is an atomic rename op */
> -#define XFS_DA_OP_ADDNAME 0x0004 /* this is an add operation */
> -#define XFS_DA_OP_OKNOENT 0x0008 /* lookup/add op, ENOENT ok, else die */
> -#define XFS_DA_OP_CILOOKUP 0x0010 /* lookup to return CI name if found */
> -#define XFS_DA_OP_ALLOCVAL 0x0020 /* lookup to alloc buffer if found */
> -#define XFS_DA_OP_INCOMPLETE 0x0040 /* lookup INCOMPLETE attr keys */
> -
> -#define XFS_DA_OP_FLAGS \
> - { XFS_DA_OP_JUSTCHECK, "JUSTCHECK" }, \
> - { XFS_DA_OP_RENAME, "RENAME" }, \
> - { XFS_DA_OP_ADDNAME, "ADDNAME" }, \
> - { XFS_DA_OP_OKNOENT, "OKNOENT" }, \
> - { XFS_DA_OP_CILOOKUP, "CILOOKUP" }, \
> - { XFS_DA_OP_ALLOCVAL, "ALLOCVAL" }, \
> - { XFS_DA_OP_INCOMPLETE, "INCOMPLETE" }
> -
> /*
> * Storage for holding state during Btree searches and split/join ops.
> *
> diff --git a/fs/xfs/libxfs/xfs_types.h b/fs/xfs/libxfs/xfs_types.h
> index 397d94775440..e2711d119665 100644
> --- a/fs/xfs/libxfs/xfs_types.h
> +++ b/fs/xfs/libxfs/xfs_types.h
> @@ -175,6 +175,66 @@ enum xfs_ag_resv_type {
> XFS_AG_RESV_RMAPBT,
> };
>
> +/*
> + * Dir/attr btree search comparison results.
> + */
> +enum xfs_dacmp {
> + XFS_CMP_DIFFERENT, /* names are completely different */
> + XFS_CMP_EXACT, /* names are exactly the same */
> + XFS_CMP_CASE /* names are same but differ in case */
> +};
> +
> +/*
> + * Structure to ease passing around dir/attr component names.
> + */
> +typedef struct xfs_da_args {
> + struct xfs_da_geometry *geo; /* da block geometry */
> + const uint8_t *name; /* string (maybe not NULL terminated) */
> + int namelen; /* length of string (maybe no NULL) */
> + uint8_t filetype; /* filetype of inode for directories */
> + uint8_t *value; /* set of bytes (maybe contain NULLs) */
> + int valuelen; /* length of value */
> + int flags; /* argument flags (eg: ATTR_NOCREATE) */
> + xfs_dahash_t hashval; /* hash value of name */
> + xfs_ino_t inumber; /* input/output inode number */
> + struct xfs_inode *dp; /* directory inode to manipulate */
> + struct xfs_trans *trans; /* current trans (changes over time) */
> + xfs_extlen_t total; /* total blocks needed, for 1st bmap */
> + int whichfork; /* data or attribute fork */
> + xfs_dablk_t blkno; /* blkno of attr leaf of interest */
> + int index; /* index of attr of interest in blk */
> + xfs_dablk_t rmtblkno; /* remote attr value starting blkno */
> + int rmtblkcnt; /* remote attr value block count */
> + int rmtvaluelen; /* remote attr value length in bytes */
> + xfs_dablk_t blkno2; /* blkno of 2nd attr leaf of interest */
> + int index2; /* index of 2nd attr in blk */
> + xfs_dablk_t rmtblkno2; /* remote attr value starting blkno */
> + int rmtblkcnt2; /* remote attr value block count */
> + int rmtvaluelen2; /* remote attr value length in bytes */
> + int op_flags; /* operation flags */
> + enum xfs_dacmp cmpresult; /* name compare result for lookups */
> +} xfs_da_args_t;
> +
> +/*
> + * Operation flags:
> + */
> +#define XFS_DA_OP_JUSTCHECK 0x0001 /* check for ok with no space */
> +#define XFS_DA_OP_RENAME 0x0002 /* this is an atomic rename op */
> +#define XFS_DA_OP_ADDNAME 0x0004 /* this is an add operation */
> +#define XFS_DA_OP_OKNOENT 0x0008 /* lookup/add op, ENOENT ok, else die */
> +#define XFS_DA_OP_CILOOKUP 0x0010 /* lookup to return CI name if found */
> +#define XFS_DA_OP_ALLOCVAL 0x0020 /* lookup to alloc buffer if found */
> +#define XFS_DA_OP_INCOMPLETE 0x0040 /* lookup INCOMPLETE attr keys */
> +
> +#define XFS_DA_OP_FLAGS \
> + { XFS_DA_OP_JUSTCHECK, "JUSTCHECK" }, \
> + { XFS_DA_OP_RENAME, "RENAME" }, \
> + { XFS_DA_OP_ADDNAME, "ADDNAME" }, \
> + { XFS_DA_OP_OKNOENT, "OKNOENT" }, \
> + { XFS_DA_OP_CILOOKUP, "CILOOKUP" }, \
> + { XFS_DA_OP_ALLOCVAL, "ALLOCVAL" }, \
> + { XFS_DA_OP_INCOMPLETE, "INCOMPLETE" }
> +
> /*
> * Type verifier functions
> */
> --
> 2.24.1
>