]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: use xfs_defer_alloc a bit more
authorDave Chinner <dchinner@redhat.com>
Mon, 22 Apr 2024 17:00:51 +0000 (10:00 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Mon, 3 Jun 2024 18:37:35 +0000 (11:37 -0700)
Source kernel commit: 57b98393b812ddaf9cf33a0d57d70b25cabfed66

Noticed by inspection, simple factoring allows the same allocation
routine to be used for both transaction and recovery contexts.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
libxfs/xfs_defer.c

index dae9ad57fb2ebde37a0f1f9fb26139e4c89a918c..9f960bec48ab78e77a5b758b4c1a326112aed804 100644 (file)
@@ -813,7 +813,7 @@ xfs_defer_can_append(
 /* Create a new pending item at the end of the transaction list. */
 static inline struct xfs_defer_pending *
 xfs_defer_alloc(
-       struct xfs_trans                *tp,
+       struct list_head                *dfops,
        const struct xfs_defer_op_type  *ops)
 {
        struct xfs_defer_pending        *dfp;
@@ -822,7 +822,7 @@ xfs_defer_alloc(
                        GFP_KERNEL | __GFP_NOFAIL);
        dfp->dfp_ops = ops;
        INIT_LIST_HEAD(&dfp->dfp_work);
-       list_add_tail(&dfp->dfp_list, &tp->t_dfops);
+       list_add_tail(&dfp->dfp_list, dfops);
 
        return dfp;
 }
@@ -840,7 +840,7 @@ xfs_defer_add(
 
        dfp = xfs_defer_find_last(tp, ops);
        if (!dfp || !xfs_defer_can_append(dfp, ops))
-               dfp = xfs_defer_alloc(tp, ops);
+               dfp = xfs_defer_alloc(&tp->t_dfops, ops);
 
        xfs_defer_add_item(dfp, li);
        trace_xfs_defer_add_item(tp->t_mountp, dfp, li);
@@ -864,7 +864,7 @@ xfs_defer_add_barrier(
        if (dfp)
                return;
 
-       xfs_defer_alloc(tp, &xfs_barrier_defer_type);
+       xfs_defer_alloc(&tp->t_dfops, &xfs_barrier_defer_type);
 
        trace_xfs_defer_add_item(tp->t_mountp, dfp, NULL);
 }
@@ -879,14 +879,9 @@ xfs_defer_start_recovery(
        struct list_head                *r_dfops,
        const struct xfs_defer_op_type  *ops)
 {
-       struct xfs_defer_pending        *dfp;
+       struct xfs_defer_pending        *dfp = xfs_defer_alloc(r_dfops, ops);
 
-       dfp = kmem_cache_zalloc(xfs_defer_pending_cache,
-                       GFP_KERNEL | __GFP_NOFAIL);
-       dfp->dfp_ops = ops;
        dfp->dfp_intent = lip;
-       INIT_LIST_HEAD(&dfp->dfp_work);
-       list_add_tail(&dfp->dfp_list, r_dfops);
 }
 
 /*