]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: recreate work items when recovering intent items
authorDarrick J. Wong <djwong@kernel.org>
Mon, 15 Apr 2024 23:07:31 +0000 (16:07 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 17 Apr 2024 21:06:23 +0000 (14:06 -0700)
Source kernel commit: e70fb328d5277297ea2d9169a3a046de6412d777

Recreate work items for each xfs_defer_pending object when we are
recovering intent items.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bill O'Donnell <bodonnel@redhat.com>
libxfs/xfs_defer.c
libxfs/xfs_defer.h

index bd6f14a2c0d2e43b5d098592e1dcaf726bdeaeb3..4900a7d62e5e8448dba3200c5ee3028c32cff42e 100644 (file)
@@ -671,9 +671,8 @@ xfs_defer_add(
                list_add_tail(&dfp->dfp_list, &tp->t_dfops);
        }
 
-       list_add_tail(li, &dfp->dfp_work);
+       xfs_defer_add_item(dfp, li);
        trace_xfs_defer_add_item(tp->t_mountp, dfp, li);
-       dfp->dfp_count++;
 }
 
 /*
index 5dce938ba3d594c0cee79530430eddc463dc2d19..bef5823f61fb822475ae63fd29a45b954623dada 100644 (file)
@@ -130,6 +130,15 @@ void xfs_defer_start_recovery(struct xfs_log_item *lip,
 void xfs_defer_cancel_recovery(struct xfs_mount *mp,
                struct xfs_defer_pending *dfp);
 
+static inline void
+xfs_defer_add_item(
+       struct xfs_defer_pending        *dfp,
+       struct list_head                *work)
+{
+       list_add_tail(work, &dfp->dfp_work);
+       dfp->dfp_count++;
+}
+
 int __init xfs_defer_init_item_caches(void);
 void xfs_defer_destroy_item_caches(void);