]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: clean out XFS_LI_DIRTY setting boilerplate from ->iop_relog
authorDarrick J. Wong <djwong@kernel.org>
Mon, 15 Apr 2024 23:07:32 +0000 (16:07 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 17 Apr 2024 21:06:23 +0000 (14:06 -0700)
Source kernel commit: 3e0958be2156d90ef908a1a547b4e27a3ec38da9

Hoist this dirty flag setting to the ->iop_relog callsite to reduce
boilerplate.

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

index 43117099cc4c7da46419f474a7adbfe8c6c25921..42e1c9c0c9a40401190f68855407176c8905e4f2 100644 (file)
@@ -469,6 +469,8 @@ xfs_defer_relog(
        ASSERT((*tpp)->t_flags & XFS_TRANS_PERM_LOG_RES);
 
        list_for_each_entry(dfp, dfops, dfp_list) {
+               struct xfs_log_item     *lip;
+
                /*
                 * If the log intent item for this deferred op is not a part of
                 * the current log checkpoint, relog the intent item to keep
@@ -497,9 +499,12 @@ xfs_defer_relog(
                XFS_STATS_INC((*tpp)->t_mountp, defer_relog);
 
                xfs_defer_create_done(*tpp, dfp);
-               dfp->dfp_intent = xfs_trans_item_relog(dfp->dfp_intent,
-                               dfp->dfp_done, *tpp);
+               lip = xfs_trans_item_relog(dfp->dfp_intent, dfp->dfp_done,
+                               *tpp);
+               if (lip)
+                       set_bit(XFS_LI_DIRTY, &lip->li_flags);
                dfp->dfp_done = NULL;
+               dfp->dfp_intent = lip;
        }
 
        if ((*tpp)->t_flags & XFS_TRANS_DIRTY)