]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs: reuse xfs_extent_free_cancel_item
authorChristoph Hellwig <hch@lst.de>
Wed, 3 Jul 2024 21:21:38 +0000 (14:21 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 31 Jul 2024 01:46:43 +0000 (18:46 -0700)
Reuse xfs_extent_free_cancel_item to put the AG/RTG and free the item in
a few places that currently open code the logic.

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>
libxfs/defer_item.c

index 8cb27912fb3e8c9fb5a0303fa7782a56f2823ef3..dd88e75e91a47b4f164a038b61b73b8d31ea924d 100644 (file)
@@ -92,6 +92,17 @@ xfs_extent_free_put_group(
        xfs_perag_intent_put(xefi->xefi_pag);
 }
 
+/* Cancel a free extent. */
+STATIC void
+xfs_extent_free_cancel_item(
+       struct list_head                *item)
+{
+       struct xfs_extent_free_item     *xefi = xefi_entry(item);
+
+       xfs_extent_free_put_group(xefi);
+       kmem_cache_free(xfs_extfree_item_cache, xefi);
+}
+
 /* Process a free extent. */
 STATIC int
 xfs_extent_free_finish_item(
@@ -123,11 +134,8 @@ xfs_extent_free_finish_item(
         * Don't free the XEFI if we need a new transaction to complete
         * processing of it.
         */
-       if (error == -EAGAIN)
-               return error;
-
-       xfs_extent_free_put_group(xefi);
-       kmem_cache_free(xfs_extfree_item_cache, xefi);
+       if (error != -EAGAIN)
+               xfs_extent_free_cancel_item(item);
        return error;
 }
 
@@ -138,17 +146,6 @@ xfs_extent_free_abort_intent(
 {
 }
 
-/* Cancel a free extent. */
-STATIC void
-xfs_extent_free_cancel_item(
-       struct list_head                *item)
-{
-       struct xfs_extent_free_item     *xefi = xefi_entry(item);
-
-       xfs_extent_free_put_group(xefi);
-       kmem_cache_free(xfs_extfree_item_cache, xefi);
-}
-
 const struct xfs_defer_op_type xfs_extent_free_defer_type = {
        .name           = "extent_free",
        .create_intent  = xfs_extent_free_create_intent,
@@ -185,8 +182,7 @@ xfs_agfl_free_finish_item(
                error = xfs_free_ag_extent(tp, agbp, xefi->xefi_pag->pag_agno,
                                agbno, 1, &oinfo, XFS_AG_RESV_AGFL);
 
-       xfs_extent_free_put_group(xefi);
-       kmem_cache_free(xfs_extfree_item_cache, xefi);
+       xfs_extent_free_cancel_item(item);
        return error;
 }