Hi all, Now that we've introduced tickets to track the status of repairs to a specific principal XFS object (fs, ag, file), use them to track the scrub state of those same objects. Ultimately, we want to make it easy to introduce vectorized repair, where we send a batch of repair requests to the kernel instead of making millions of ioctl calls. For now, however, we'll settle for easier bookkeepping. 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-object-tracking-6.10 --- Commits in this patchset: * xfs_scrub: start tracking scrub state in scrub_item * xfs_scrub: remove enum check_outcome * xfs_scrub: refactor scrub_meta_type out of existence * xfs_scrub: hoist repair retry loop to repair_item_class * xfs_scrub: hoist scrub retry loop to scrub_item_check_file --- scrub/phase1.c | 3 scrub/phase2.c | 12 +- scrub/phase3.c | 41 ++---- scrub/phase4.c | 16 +- scrub/phase5.c | 5 - scrub/phase7.c | 5 + scrub/repair.c | 71 +++++------ scrub/scrub.c | 321 ++++++++++++++++++++++--------------------------- scrub/scrub.h | 40 ++++-- scrub/scrub_private.h | 14 ++ 10 files changed, 257 insertions(+), 271 deletions(-)