FAILED: patch "[PATCH] xfs: don't queue rmap update twice when reaping a fork" failed to apply to 6.12-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y
git checkout FETCH_HEAD
git cherry-pick -x 219ff8a734d8438e24eb346a847c9b1ad9b7ab5d
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026110457-depravity-unflawed-a6ca@gregkh' --subject-prefix 'PATCH 6.12.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 219ff8a734d8438e24eb346a847c9b1ad9b7ab5d Mon Sep 17 00:00:00 2001
From: "Darrick J. Wong" <[email protected]>
Date: Mon, 12 Oct 2026 23:06:30 -0700
Subject: [PATCH] xfs: don't queue rmap update twice when reaping a fork
LOLLM noticed that xrep_reap_bmapi_iter calls xfs_bmap_unmap_extent and xfs_rmap_unmap_extent to remove a mapping from a file fork and its reverse mapping. However, xfs_bmap_del_extent_real also queues a deferred rmap removal log item, which means that we incorrectly queue two rmap removal operations. Fix that by removing the extra call and updating the comment to mention this subtlety that I forgot, having written the code. :P
fs/xfs/scrub/reap.c +2 -2
@@ -1480,12 +1480,12 @@ xrep_reap_bmapi_iter(/* * t0: Schedule removal of the mapping from the fork. We use * deferred log intents in this function to control the exact -* sequence of metadata updates. +* sequence of metadata updates. The BUI queues a RUI to +* remove the reverse mapping. */ xfs_bmap_unmap_extent (sc->tp, rs->ip, rs->whichfork, imap);xfs_trans_mod_dquot_byino (sc->tp, rs->ip,XFS_TRANS_DQ_BCOUNT , -(int64_t )imap->br_blockcount); -xfs_rmap_unmap_extent (sc->tp, rs->ip, rs->whichfork, imap);return 0 ; }
Sasha Levin
maintainerPATCH 1/1 xfs: don't queue rmap update twice when reaping a fork
From: "Darrick J. Wong" <[email protected]>
[ Upstream commit 219ff8a734d8438e24eb346a847c9b1ad9b7ab5d ]
LOLLM noticed that xrep_reap_bmapi_iter calls xfs_bmap_unmap_extent and xfs_rmap_unmap_extent to remove a mapping from a file fork and its reverse mapping. However, xfs_bmap_del_extent_real also queues a deferred rmap removal log item, which means that we incorrectly queue two rmap removal operations. Fix that by removing the extra call and updating the comment to mention this subtlety that I forgot, having written the code. :P
--- fs/xfs/scrub/reap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/xfs/scrub/reap.c +2 -2
@@ -905,12 +905,12 @@ xrep_reap_bmapi_iter(/* * Schedule removal of the mapping from the fork. We use * deferred log intents in this function to control the exact -* sequence of metadata updates. +* sequence of metadata updates. The BUI queues a RUI to +* remove the reverse mapping. */ xfs_bmap_unmap_extent (sc->tp, ip, whichfork, imap);xfs_trans_mod_dquot_byino (sc->tp, ip,XFS_TRANS_DQ_BCOUNT , -(int64_t )imap->br_blockcount); -xfs_rmap_unmap_extent (sc->tp, ip, whichfork, imap);return 0 ; }
Signature · 1 line
2.53.0