diff mbox series

btrfs: add extra warning when qgroup is marked inconsistent

Message ID 834219eda2fad14d6d75ccc626166b14404e3867.1731272398.git.wqu@suse.com (mailing list archive)
State New
Headers show
Series btrfs: add extra warning when qgroup is marked inconsistent | expand

Commit Message

Qu Wenruo Nov. 10, 2024, 9 p.m. UTC
Unlike qgroup rescan, which always shows whether it cleared the
inconsistent flag, we do not have a proper way to show if qgroup is
marked inconsistent.

This was not a big deal before as there aren't that many locations that
can mark qgroup  inconsistent.

But with the introduction of drop_subtree_threshold, qgroup can be
marked inconsistent very frequently, especially for dropping large
subvolume.

Although most user space tools relying on qgroup should do their own
checks and queue a rescan if needed, we have no idea when qgroup is
marked inconsistent, and will be much harder to debug.

So this patch will add an extra warning (btrfs_warn_rl()) when the
qgroup flag is flipped into inconsistent for the first time.

Combined with the existing qgroup rescan messages, it should provide
some clues for debugging.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 fs/btrfs/qgroup.c | 2 ++
 1 file changed, 2 insertions(+)
diff mbox series

Patch

diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index c82df56fbf3d..8956bee0abee 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -353,6 +353,8 @@  static void qgroup_mark_inconsistent(struct btrfs_fs_info *fs_info)
 {
 	if (btrfs_qgroup_mode(fs_info) == BTRFS_QGROUP_MODE_SIMPLE)
 		return;
+	if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT))
+		btrfs_warn_rl(fs_info, "qgroup marked inconsistent");
 	fs_info->qgroup_flags |= (BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT |
 				  BTRFS_QGROUP_RUNTIME_FLAG_CANCEL_RESCAN |
 				  BTRFS_QGROUP_RUNTIME_FLAG_NO_ACCOUNTING);