Hi everyone, As I've mentioned several times throughout 2022, I would like to merge the online fsck feature in time for the 2023 LTS kernel. The first big step in this process is to merge all the pending bug fixes, validation improvements, and general reorganization of the existing metadata scrubbing functionality. This first deluge starts with the design document for the entirety of the online fsck feature. The design doc should be familiar to most of you, as it's been on the list for review for months already. It outlines in brief the problems we're trying to solve, the use cases and testing plan, and the fundamental data structures and algorithms underlying the entire feature. After that come all the code changes to wrap up the metadata checking part of the feature. The biggest piece here is the scrub drains that allow scrub to quiesce deferred ops targeting AGs so that it can cross-reference recordsets. Most of the rest is tweaking the btree code so that we can do keyspace scans to look for conflicting records. For this review, I would like people to focus the following: - Are the major subsystems sufficiently documented that you could figure out what the code does? - Do you see any problems that are severe enough to cause long term support hassles? (e.g. bad API design, writing weird metadata to disk) - Can you spot mis-interactions between the subsystems? - What were my blind spots in devising this feature? - Are there missing pieces that you'd like to help build? - Can I just merge all of this? The one thing that is /not/ in scope for this review are requests for more refactoring of existing subsystems. While there are usually valid arguments for performing such cleanups, those are separate tasks to be prioritized separately. I will get to them after merging online fsck. I've been running daily online scrubs of every computer I own for the last five years, which has helped me iron out real problems in (limited scope) production. All issues observed in that time have been corrected in this submission. As a warning, the patches will likely take several days to trickle in. All four patch deluges are based off kernel 6.2-rc1, xfsprogs 6.1, and fstests 2022-12-25. Thank you all for your participation in the XFS community. Have a safe New Years, and I'll see you all next year! --D