xfs: remove the ->data_unused_p method
authorChristoph Hellwig <hch@lst.de>
Fri, 8 Nov 2019 23:05:31 +0000 (15:05 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Mon, 11 Nov 2019 00:54:22 +0000 (16:54 -0800)
Replace the two users of the ->data_unused_p dir ops method with a
direct calculation using ->data_entry_offset, and clean them up a bit.
xfs_dir2_sf_to_block already had an offset variable containing the
value of ->data_entry_offset, which we are now reusing to make it
clear that the initial freespace entry is at the same place that
we later fill in the 1 entry, and in xfs_dir3_data_init the function
is cleaned up a bit to keep the initialization of fields of a given
structure close to each other, and to avoid a local variable.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_da_format.c
fs/xfs/libxfs/xfs_dir2.h
fs/xfs/libxfs/xfs_dir2_block.c
fs/xfs/libxfs/xfs_dir2_data.c

index 711faff4aea25758191365619934bf44a3b2a495..347092ec28ab852834fcdc99e5e11754f509aa19 100644 (file)
@@ -130,13 +130,6 @@ xfs_dir2_data_entry_p(struct xfs_dir2_data_hdr *hdr)
                ((char *)hdr + sizeof(struct xfs_dir2_data_hdr));
 }
 
-static struct xfs_dir2_data_unused *
-xfs_dir2_data_unused_p(struct xfs_dir2_data_hdr *hdr)
-{
-       return (struct xfs_dir2_data_unused *)
-               ((char *)hdr + sizeof(struct xfs_dir2_data_hdr));
-}
-
 static struct xfs_dir2_data_entry *
 xfs_dir3_data_entry_p(struct xfs_dir2_data_hdr *hdr)
 {
@@ -144,13 +137,6 @@ xfs_dir3_data_entry_p(struct xfs_dir2_data_hdr *hdr)
                ((char *)hdr + sizeof(struct xfs_dir3_data_hdr));
 }
 
-static struct xfs_dir2_data_unused *
-xfs_dir3_data_unused_p(struct xfs_dir2_data_hdr *hdr)
-{
-       return (struct xfs_dir2_data_unused *)
-               ((char *)hdr + sizeof(struct xfs_dir3_data_hdr));
-}
-
 static const struct xfs_dir_ops xfs_dir2_ops = {
        .data_entsize = xfs_dir2_data_entsize,
        .data_get_ftype = xfs_dir2_data_get_ftype,
@@ -164,7 +150,6 @@ static const struct xfs_dir_ops xfs_dir2_ops = {
        .data_entry_offset = sizeof(struct xfs_dir2_data_hdr),
 
        .data_entry_p = xfs_dir2_data_entry_p,
-       .data_unused_p = xfs_dir2_data_unused_p,
 };
 
 static const struct xfs_dir_ops xfs_dir2_ftype_ops = {
@@ -180,7 +165,6 @@ static const struct xfs_dir_ops xfs_dir2_ftype_ops = {
        .data_entry_offset = sizeof(struct xfs_dir2_data_hdr),
 
        .data_entry_p = xfs_dir2_data_entry_p,
-       .data_unused_p = xfs_dir2_data_unused_p,
 };
 
 static const struct xfs_dir_ops xfs_dir3_ops = {
@@ -196,7 +180,6 @@ static const struct xfs_dir_ops xfs_dir3_ops = {
        .data_entry_offset = sizeof(struct xfs_dir3_data_hdr),
 
        .data_entry_p = xfs_dir3_data_entry_p,
-       .data_unused_p = xfs_dir3_data_unused_p,
 };
 
 /*
index 8bfcf4c1b9c4ff9535ee834105d6dd0f3389c605..75aec05aae1024f701a702a263180d4ae7bbdca5 100644 (file)
@@ -45,8 +45,6 @@ struct xfs_dir_ops {
 
        struct xfs_dir2_data_entry *
                (*data_entry_p)(struct xfs_dir2_data_hdr *hdr);
-       struct xfs_dir2_data_unused *
-               (*data_unused_p)(struct xfs_dir2_data_hdr *hdr);
 };
 
 extern const struct xfs_dir_ops *
index e7719356829de0400c12f8b67c4aacb53e6f4094..9061f378d52a2313c5be8f1c6d759b3cf1489af7 100644 (file)
@@ -1112,7 +1112,7 @@ xfs_dir2_sf_to_block(
         * The whole thing is initialized to free by the init routine.
         * Say we're using the leaf and tail area.
         */
-       dup = dp->d_ops->data_unused_p(hdr);
+       dup = bp->b_addr + offset;
        needlog = needscan = 0;
        error = xfs_dir2_data_use_free(args, bp, dup, args->geo->blksize - i,
                        i, &needlog, &needscan);
index 2c79be4c3153855d5dc3425bc590c135fe7e4786..3ecec8e1c5f6994de15977f02e95dacf3e54fb8b 100644 (file)
@@ -631,24 +631,20 @@ xfs_dir2_data_freescan(
  */
 int                                            /* error */
 xfs_dir3_data_init(
-       xfs_da_args_t           *args,          /* directory operation args */
-       xfs_dir2_db_t           blkno,          /* logical dir block number */
-       struct xfs_buf          **bpp)          /* output block buffer */
+       struct xfs_da_args              *args,  /* directory operation args */
+       xfs_dir2_db_t                   blkno,  /* logical dir block number */
+       struct xfs_buf                  **bpp)  /* output block buffer */
 {
-       struct xfs_buf          *bp;            /* block buffer */
-       xfs_dir2_data_hdr_t     *hdr;           /* data block header */
-       xfs_inode_t             *dp;            /* incore directory inode */
-       xfs_dir2_data_unused_t  *dup;           /* unused entry pointer */
-       struct xfs_dir2_data_free *bf;
-       int                     error;          /* error return value */
-       int                     i;              /* bestfree index */
-       xfs_mount_t             *mp;            /* filesystem mount point */
-       xfs_trans_t             *tp;            /* transaction pointer */
-       int                     t;              /* temp */
-
-       dp = args->dp;
-       mp = dp->i_mount;
-       tp = args->trans;
+       struct xfs_trans                *tp = args->trans;
+       struct xfs_inode                *dp = args->dp;
+       struct xfs_mount                *mp = dp->i_mount;
+       struct xfs_buf                  *bp;
+       struct xfs_dir2_data_hdr        *hdr;
+       struct xfs_dir2_data_unused     *dup;
+       struct xfs_dir2_data_free       *bf;
+       int                             error;
+       int                             i;
+
        /*
         * Get the buffer set up for the block.
         */
@@ -677,6 +673,8 @@ xfs_dir3_data_init(
 
        bf = dp->d_ops->data_bestfree_p(hdr);
        bf[0].offset = cpu_to_be16(dp->d_ops->data_entry_offset);
+       bf[0].length =
+               cpu_to_be16(args->geo->blksize - dp->d_ops->data_entry_offset);
        for (i = 1; i < XFS_DIR2_DATA_FD_COUNT; i++) {
                bf[i].length = 0;
                bf[i].offset = 0;
@@ -685,13 +683,11 @@ xfs_dir3_data_init(
        /*
         * Set up an unused entry for the block's body.
         */
-       dup = dp->d_ops->data_unused_p(hdr);
+       dup = bp->b_addr + dp->d_ops->data_entry_offset;
        dup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG);
-
-       t = args->geo->blksize - (uint)dp->d_ops->data_entry_offset;
-       bf[0].length = cpu_to_be16(t);
-       dup->length = cpu_to_be16(t);
+       dup->length = bf[0].length;
        *xfs_dir2_data_unused_tag_p(dup) = cpu_to_be16((char *)dup - (char *)hdr);
+
        /*
         * Log it and return it.
         */