Hello,
Here is the v2 of the freespace tree repair support patches. Version 1 can be
found at [0]. For background on the series please refer to the initial cover
letter. This time round a number of changes have been incorporated based on
feedback from Omar. Namely:
1. Added 2 new patches, patches 3 and 4, which refactor the userspace
impelementation of various bit manipulation functions. This was required to
implement the bitmap conversion code from kernel space.
2. Extended patch 5 to include the bitmap conversion code, now userspace
handles the case of fragmented fst.
3. Re-ordered patches 6 and 7 so that we first hook into the extent
alloc/dealloc sequence (patch 6) and finally enable support for fst in patch 7.
4. Updated the FST test (patch 9) to work with the new bitmap conversion code
since it changed the layout of the expected freespace tree. Now the test
passes again. Also removed an unused function.
5. Added patch 10 which fixes a similar bug to e444c7bfa65f ("btrfs-progs:
check: Fix wrong error message in case of corrupted extent")
Following the updates, I rerun all misc/fsck-tests and no failures were
observed.
More feedback and suggestions are always welcomed.
[0] https://lore.kernel.org/linux-btrfs/1529060762-4372-1-git-send-email-nborisov@xxxxxxxx/
Nikolay Borisov (10):
btrfs-progs: Add support for freespace tree in btrfs_read_fs_root
btrfs-progs: Add extent buffer bitmap manipulation infrastructure
btrfs-progs: Replace homegrown bitops related functions with kernel
counterparts
btrfs-progs: Implement find_*_bit_le operations
btrfs-progs: Pull free space tree related code from kernel
btrfs-progs: Hook FST code in extent (de)alloc
btrfs-progs: Add freespace tree as compat_ro supported feature
btrfs-progs: check: Add support for freespace tree fixing
btrfs-progs: tests: Test for FST corruption detection/repair
btrfs-progs: check: Fix wrong error message in case of corrupted
bitmap
check/main.c | 47 +-
ctree.c | 77 ++
ctree.h | 19 +-
disk-io.c | 3 +
extent-tree.c | 11 +
extent_io.c | 56 +
extent_io.h | 4 +
free-space-tree.c | 1255 ++++++++++++++++++++-
free-space-tree.h | 13 +-
kerncompat.h | 6 +
kernel-lib/bitops.h | 210 ++--
tests/fsck-tests/036-freespacetree-repair/test.sh | 76 ++
12 files changed, 1662 insertions(+), 115 deletions(-)
create mode 100755 tests/fsck-tests/036-freespacetree-repair/test.sh
--
2.7.4