Hi all, For the third part of the twenty-second revision of the online repair patchset, we implement repair of extended attribute data. Patch 1 implements a new data structure for storing arbitrary key/value pairs, which we're going to need to reconstruct extended attribute forks. Patches 2-4 clean up the block unmapping code so that we will be able to perform a mass reset of an inode's fork. This is a key component for salvaging extended attributes, freeing all the attr fork blocks, and reconstructing the extended attribute data. Patch 5 implements extended attribute salvage operations. There is no redundant or secondary xattr metadata, so the best we can do is trawl through the attr leaves looking for intact entities. Patch 6 augments scrub to rebuild extended attributes when any of the attr blocks are fragmented. If you're going to start using this mess, you probably ought to just pull from my git trees, which are linked below. This is an extraordinary way to destroy everything. Enjoy! Comments and questions are, as always, welcome. --D kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=repair-inode-data xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=repair-inode-data