Re: [PATCH 3/5] xfs: factor free block index lookup from xfs_dir2_node_addname_int()

Christoph Hellwig
2018-10-26T18:24:29Z

> +/*
> + * Add the data entry for a node-format directory name addition.
> + * The leaf entry is added in xfs_dir2_leafn_add.
> + * We may enter with a freespace block that the lookup found.
> + */
> +static int /* error */
> +xfs_dir2_node_addname_int(
> + xfs_da_args_t *args, /* operation arguments */
> + xfs_da_state_blk_t *fblk) /* optional freespace block */
> +{
> + xfs_dir2_data_hdr_t *hdr; /* data block header */
> + xfs_dir2_db_t dbno; /* data block number */
> + struct xfs_buf *dbp; /* data block buffer */
> + xfs_dir2_data_entry_t *dep; /* data entry pointer */
> + xfs_inode_t *dp; /* incore directory inode */
> + xfs_dir2_data_unused_t *dup; /* data unused entry pointer */
> + int error; /* error return value */
> + struct xfs_buf *fbp; /* freespace buffer */
> + int findex; /* freespace entry index */
> + xfs_dir2_free_t *free=NULL; /* freespace block structure */
> + int length; /* length of the new entry */
> + int logfree = 0; /* need to log free entry */
> + int needlog = 0; /* need to log data header */
> + int needscan = 0; /* need to rescan data frees */
> + __be16 *tagp; /* data entry tag pointer */
> + xfs_trans_t *tp; /* transaction pointer */
> + __be16 *bests;
> + struct xfs_dir2_data_free *bf;
> + xfs_dir2_data_aoff_t aoff;
> +
> + dp = args->dp;
> + tp = args->trans;
> + length = dp->d_ops->data_entsize(args->namelen);

Can you remove the use of typedefs and move the trivial initializers
to the declaration like you've done for the new helpers here?

Otherwise this looks fine:

Reviewed-by: Christoph Hellwig <hch@lst.de>