Hi Carlos, Please pull this branch with changes for xfsprogs for 6.10-rc1. As usual, I did a test-merge with the main upstream branch as of a few minutes ago, and didn't see any conflicts. Please let me know if you encounter any problems. The following changes since commit bf15d7766e3dd63eda56f6b2f7976e529cd07575: xfs_scrub: enable users to bump information messages to warnings (2024-07-29 17:01:07 -0700) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfsprogs-dev.git tags/scrub-repair-data-deps-6.10_2024-07-29 for you to fetch changes up to 81bfd0ad04a58892e2c153a22c361e7ff959f3fd: xfs_scrub: remove unused action_list fields (2024-07-29 17:01:07 -0700) ---------------------------------------------------------------- xfs_scrub: track data dependencies for repairs [v30.9 08/28] Certain kinds of XFS metadata depend on the correctness of lower level metadata. For example, directory indexes depends on the directory data fork, which in turn depend on the directory inode to be correct. The current scrub code does not strictly preserve these dependencies if it has to defer a repair until phase 4, because phase 4 prioritizes repairs by type (corruption, then cross referencing, and then preening) and loses the ordering of in the previous phases. This leads to absurd things like trying to repair a directory before repairing its corrupted fork, which is absurd. To solve this problem, introduce a repair ticket structure to track all the repairs pending for a principal object (inode, AG, etc). This reduces memory requirements if an object requires more than one type of repair and makes it very easy to track the data dependencies between sub-objects of a principal object. Repair dependencies between object types (e.g. bnobt before inodes) must still be encoded statically into phase 4. A secondary benefit of this new ticket structure is that we can decide to attempt a repair of an object A that was flagged for a cross referencing error during the scan if a different object B depends on A but only B showed definitive signs of corruption. This has been running on the djcloud for months with no problems. Enjoy! Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> ---------------------------------------------------------------- Darrick J. Wong (9): xfs_scrub: track repair items by principal, not by individual repairs xfs_scrub: use repair_item to direct repair activities xfs_scrub: remove action lists from phaseX code xfs_scrub: remove scrub_metadata_file xfs_scrub: boost the repair priority of dependencies of damaged items xfs_scrub: clean up repair_item_difficulty a little xfs_scrub: check dependencies of a scrub type before repairing xfs_scrub: retry incomplete repairs xfs_scrub: remove unused action_list fields libfrog/scrub.c | 1 + scrub/phase1.c | 9 +- scrub/phase2.c | 46 +++-- scrub/phase3.c | 77 ++++---- scrub/phase4.c | 17 +- scrub/phase5.c | 9 +- scrub/phase7.c | 9 +- scrub/repair.c | 530 ++++++++++++++++++++++++++++++++++---------------- scrub/repair.h | 47 +++-- scrub/scrub.c | 136 ++++++------- scrub/scrub.h | 108 ++++++++-- scrub/scrub_private.h | 37 ++++ 12 files changed, 664 insertions(+), 362 deletions(-)