Hi all, As mentioned earlier, the repair strategy for file-based metadata is to build a new copy in a temporary file and swap the file fork mappings with the metadata inode. We've built the atomic extent swap facility, so now we need to build a facility for handling private temporary files. The first step is to teach the filesystem to ignore the temporary files. We'll mark them as PRIVATE in the VFS so that the kernel security modules will leave it alone. The second step is to add the online repair code the ability to create a temporary file and reap extents from the temporary file after the extent swap. 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-tempfiles --- fs/xfs/Makefile | 1 fs/xfs/scrub/parent.c | 2 fs/xfs/scrub/reap.c | 427 +++++++++++++++++++++++++++++++++++++++++++++-- fs/xfs/scrub/reap.h | 21 ++ fs/xfs/scrub/scrub.c | 3 fs/xfs/scrub/scrub.h | 4 fs/xfs/scrub/tempfile.c | 251 ++++++++++++++++++++++++++++ fs/xfs/scrub/tempfile.h | 28 +++ fs/xfs/scrub/trace.h | 96 +++++++++++ fs/xfs/xfs_export.c | 2 fs/xfs/xfs_inode.c | 3 fs/xfs/xfs_inode.h | 2 fs/xfs/xfs_itable.c | 8 + 13 files changed, 822 insertions(+), 26 deletions(-) create mode 100644 fs/xfs/scrub/tempfile.c create mode 100644 fs/xfs/scrub/tempfile.h