Patches can be fetch from github:
https://github.com/adam900710/btrfs-progs/tree/lowmem_fixes
Thanks for reports from Chris Murphy and Christoph Anton Mitterer,
several new bugs are exposed for lowmem mode fsck.
Special thank to Christoph, who did rounds of test during the patch
development.
The following bugs are fixed in lowmem mode:
1) Block group used space false alert
If a BLOCK_GROUP_ITEM or its first EXTENT/METADATA_ITEM is located at
the first slot of a leaf, search_slot() used by lowmem mode can
point to previous leaf, with path->slots[0] beyond valid leaf slots.
This makes us to read out uninitialized data, and can abort block
group used space check loop, causing a false alert.
Fix it with a test case image inside fsck-tests/020/extent-ref-cases
Also fix all possible backward search.
Reported by Christoph.
2) Partly written prealloc extent false alert
If a prealloc extent gets partily written, lowmem mode will report
prealloc extent shouldn't have csum.
Lowmem mode passed wrong variable to csum checking code, causing it
to check the whole range of the prealloc extent, making the bug
happens.
Fix it with a test case inside fsck-tests/020/extent-ref-cases.
Reported by Chirs Murphy And Christoph.
3) Extent item size false alert.
Under certain case, btrfs lowmem mode check reports data backref
lost.
It's because newly introduced extent item size check aborts normal
check routine.
It can happen if a data/metadata extent item has no inline ref.
Fix it, test case already submitted before and merged, but due to
fsck-tests framework bugs, it never get called for lowmem mode.
4) Compressed inline data extent
The extra check on inline data extent length doesn't take compression
into consideration and will cause false alert without outputting any
error message.
Fix it and add correct error message output for it.
Also fix all possible silent error.
Reported by Christoph.
5) fsck-tests Lowmem mode override fixes
Allow lowmem mode override to get called for all tests, and allow
them all to pass lowmem mode except fsck-tests/006, which is a
original repair mode bug.
Lu Fengqi (1):
btrfs-progs: fsck: Fix lowmem mode override to allow it skip repair
work
Qu Wenruo (10):
btrfs-progs: lowmem check: Fix several bugs related to afterward
search
btrfs-progs: check: Output verbose error when fsck found a bug in any
tree
btrfs-progs: lowmem check: Fix false alert in checking data extent
csums
btrfs-progs: lowmem check: Fix extent item size false alert
btrfs-progs: lowmem check: Fix false alert on inline compressed extent
btrfs-progs: lowmem check: Fix silent error if first inode item
missing
btrfs-progs: tests: Move fsck-tests/015 to fuzz tests
btrfs-progs: fsck-test: Add test image for lowmem mode block group
false alert
btrfs-progs: fsck-test: Make 013 compatible with lowmem mode
btrfs-progs: fsck-test: Add new test case for file extent false alerts
Su Yue (1):
btrfs-progs: cmds-check.c: walk_down_tree_v2 break cause of leaf
process
cmds-check.c | 172 +++++++++++++++------
tests/common | 8 +-
tests/common.local | 2 +-
tests/fsck-tests/013-extent-tree-rebuild/test.sh | 2 +-
.../block_group_item_false_alert.raw.xz | Bin 0 -> 47792 bytes
tests/fsck-tests/020-extent-ref-cases/test.sh | 15 +-
tests/fsck-tests/025-file-extents/test.sh | 42 +++++
.../images}/bko-97171-btrfs-image.raw.txt | 0
.../images}/bko-97171-btrfs-image.raw.xz | Bin
9 files changed, 187 insertions(+), 54 deletions(-)
create mode 100644
tests/fsck-tests/020-extent-ref-cases/block_group_item_false_alert.raw.xz
create mode 100755 tests/fsck-tests/025-file-extents/test.sh
rename tests/{fsck-tests/015-check-bad-memory-access =>
fuzz-tests/images}/bko-97171-btrfs-image.raw.txt (100%)
rename tests/{fsck-tests/015-check-bad-memory-access =>
fuzz-tests/images}/bko-97171-btrfs-image.raw.xz (100%)
--
2.11.0
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html