Hi all, While I was poking through the QA results for xfs_scrub, I noticed that it doesn't warn the user when the primary and secondary realtime metadata are so out of whack that the chances of a successful repair are not so high. I decided that it was worth refactoring the scrub code a bit so that we could warn the user about these types of things, and ended up refactoring unnecessary helpers out of existence and fixing other reporting gaps. If you're going to start using this code, I strongly recommend pulling from my git trees, which are linked below. This has been running on the djcloud for months with no problems. Enjoy! Comments and questions are, as always, welcome. xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=scrub-better-repair-warnings-6.10 --- Commits in this patchset: * xfs_scrub: fix missing scrub coverage for broken inodes * xfs_scrub: collapse trivial superblock scrub helpers * xfs_scrub: get rid of trivial fs metadata scanner helpers * xfs_scrub: split up the mustfix repairs and difficulty assessment functions * xfs_scrub: add missing repair types to the mustfix and difficulty assessment * xfs_scrub: any inconsistency in metadata should trigger difficulty warnings * xfs_scrub: warn about difficult repairs to rt and quota metadata * xfs_scrub: enable users to bump information messages to warnings --- man/man8/xfs_scrub.8 | 19 ++++++++++++++++++ scrub/common.c | 2 ++ scrub/phase1.c | 2 +- scrub/phase2.c | 53 +++++++++++++++++++++++++++++++------------------- scrub/phase3.c | 21 ++++++++++++++++---- scrub/phase4.c | 9 +++++--- scrub/phase5.c | 15 +++++++------- scrub/repair.c | 47 ++++++++++++++++++++++++++++++++++---------- scrub/repair.h | 10 +++++++-- scrub/scrub.c | 52 +------------------------------------------------ scrub/scrub.h | 7 ++----- scrub/xfs_scrub.c | 45 ++++++++++++++++++++++++++++++++++++++++++ scrub/xfs_scrub.h | 1 + 13 files changed, 175 insertions(+), 108 deletions(-)