]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: add a xefi_entry helper
authorChristoph Hellwig <hch@lst.de>
Tue, 2 Jul 2024 18:22:52 +0000 (11:22 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:37:01 +0000 (11:37 -0700)
Add a helper to translate from the item list head to the
xfs_extent_free_item structure and use it so shorten assignments
and avoid the need for extra local variables.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/xfs_extfree_item.c

index 98d0fe0175f1fcc8aab7fae7a84b61dfc1d5bd13..27b0a47cf650ee8d013eff206ec4d39f26b373c5 100644 (file)
@@ -303,6 +303,11 @@ static const struct xfs_item_ops xfs_efd_item_ops = {
        .iop_intent     = xfs_efd_item_intent,
 };
 
+static inline struct xfs_extent_free_item *xefi_entry(const struct list_head *e)
+{
+       return list_entry(e, struct xfs_extent_free_item, xefi_list);
+}
+
 /*
  * Fill the EFD with all extents from the EFI when we need to roll the
  * transaction and continue with a new EFI.
@@ -338,11 +343,8 @@ xfs_extent_free_diff_items(
        const struct list_head          *a,
        const struct list_head          *b)
 {
-       struct xfs_extent_free_item     *ra;
-       struct xfs_extent_free_item     *rb;
-
-       ra = container_of(a, struct xfs_extent_free_item, xefi_list);
-       rb = container_of(b, struct xfs_extent_free_item, xefi_list);
+       struct xfs_extent_free_item     *ra = xefi_entry(a);
+       struct xfs_extent_free_item     *rb = xefi_entry(b);
 
        return ra->xefi_pag->pag_agno - rb->xefi_pag->pag_agno;
 }
@@ -444,7 +446,7 @@ xfs_extent_free_finish_item(
        struct xfs_btree_cur            **state)
 {
        struct xfs_owner_info           oinfo = { };
-       struct xfs_extent_free_item     *xefi;
+       struct xfs_extent_free_item     *xefi = xefi_entry(item);
        struct xfs_efd_log_item         *efdp = EFD_ITEM(done);
        struct xfs_mount                *mp = tp->t_mountp;
        struct xfs_extent               *extp;
@@ -452,7 +454,6 @@ xfs_extent_free_finish_item(
        xfs_agblock_t                   agbno;
        int                             error = 0;
 
-       xefi = container_of(item, struct xfs_extent_free_item, xefi_list);
        agbno = XFS_FSB_TO_AGBNO(mp, xefi->xefi_startblock);
 
        oinfo.oi_owner = xefi->xefi_owner;
@@ -504,9 +505,7 @@ STATIC void
 xfs_extent_free_cancel_item(
        struct list_head                *item)
 {
-       struct xfs_extent_free_item     *xefi;
-
-       xefi = container_of(item, struct xfs_extent_free_item, xefi_list);
+       struct xfs_extent_free_item     *xefi = xefi_entry(item);
 
        xfs_extent_free_put_group(xefi);
        kmem_cache_free(xfs_extfree_item_cache, xefi);
@@ -526,14 +525,13 @@ xfs_agfl_free_finish_item(
        struct xfs_owner_info           oinfo = { };
        struct xfs_mount                *mp = tp->t_mountp;
        struct xfs_efd_log_item         *efdp = EFD_ITEM(done);
-       struct xfs_extent_free_item     *xefi;
+       struct xfs_extent_free_item     *xefi = xefi_entry(item);
        struct xfs_extent               *extp;
        struct xfs_buf                  *agbp;
        int                             error;
        xfs_agblock_t                   agbno;
        uint                            next_extent;
 
-       xefi = container_of(item, struct xfs_extent_free_item, xefi_list);
        ASSERT(xefi->xefi_blockcount == 1);
        agbno = XFS_FSB_TO_AGBNO(mp, xefi->xefi_startblock);
        oinfo.oi_owner = xefi->xefi_owner;