[PATCH 6/9] xfs_scrub: clean up repair_item_difficulty a little

Darrick J. Wong
2023-12-31T22:41:55Z

Document the flags handling in repair_item_difficulty.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
scrub/repair.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/scrub/repair.c b/scrub/repair.c
index 5f13f3c7a5f..d4521f50c68 100644
--- a/scrub/repair.c
+++ b/scrub/repair.c
@@ -340,6 +340,15 @@ repair_item_mustfix(
}
}

+/*
+ * These scrub item states correspond to metadata that is inconsistent in some
+ * way and must be repaired. If too many metadata objects share these states,
+ * this can make repairs difficult.
+ */
+#define HARDREPAIR_STATES (SCRUB_ITEM_CORRUPT | \
+ SCRUB_ITEM_XCORRUPT | \
+ SCRUB_ITEM_XFAIL)
+
/* Determine if primary or secondary metadata are inconsistent. */
unsigned int
repair_item_difficulty(
@@ -349,9 +358,10 @@ repair_item_difficulty(
unsigned int ret = 0;

foreach_scrub_type(scrub_type) {
- if (!(sri->sri_state[scrub_type] & (XFS_SCRUB_OFLAG_CORRUPT |
- XFS_SCRUB_OFLAG_XCORRUPT |
- XFS_SCRUB_OFLAG_XFAIL)))
+ unsigned int state;
+
+ state = sri->sri_state[scrub_type] & HARDREPAIR_STATES;
+ if (!state)
continue;

switch (scrub_type) {