btrfs-progs/check
Su Yue 4c282411eb btrfs-progs: check: continue to check space cache if sb cache_generation is 0
User reported that test fsck-tests/037-freespacetree-repair fails:

 # TEST=037\* ./fsck-tests.sh
    [TEST/fsck]   037-freespacetree-repair
 btrfs check should have detected corruption
 test failed for case 037-freespacetree-repair

The test tries to corrupt FST, call btrfs check readonly then repair FST
using btrfs check. Above case failed at the second readonly check step.
Test log said "cache and super generation don't match, space cache will
be invalidated" which is printed by validate_free_space_cache().
If cache_generation of the superblock is not -1ULL,
validate_free_space_cache() requires that cache_generation must equal
to the superblock's generation. Otherwise, it skips the check of space
cache(v1, v2) like the above case where the sb cache_generation is 0.

Since kernel commit 948462294577 ("btrfs: keep sb cache_generation
consistent with space_cache"), sb cache_generation will be set to be 0
once space cache v1 is disabled (nospace_cache/space_cache=v2). But
progs check was forgotten to be added the 0 case support.

Fix it by adding the condition if sb cache_generation is 0 in
validate_free_space_cache() as the 0 case is valid now since the
kernel commit mentioned above.

Issue: #338
Signed-off-by: Su Yue <l@damenly.su>
Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-05-12 20:44:12 +02:00
..
common.h btrfs-progs: move ctree.c to kernel-shared/ 2020-08-31 17:01:05 +02:00
main.c btrfs-progs: check: continue to check space cache if sb cache_generation is 0 2021-05-12 20:44:12 +02:00
mode-common.c btrfs-progs: move repair.[ch] to common/ 2021-05-06 16:41:47 +02:00
mode-common.h btrfs-progs: check: fix typos in code comment and 1 typo in warning 2021-03-23 17:04:22 +01:00
mode-lowmem.c btrfs-progs: move repair.[ch] to common/ 2021-05-06 16:41:47 +02:00
mode-lowmem.h btrfs-progs: check: drop unused fs_info 2020-08-31 17:01:03 +02:00
mode-original.h btrfs-progs: check/original: Add check and repair for invalid inode generation 2019-11-18 19:21:07 +01:00
qgroup-verify.c btrfs-progs: move repair.[ch] to common/ 2021-05-06 16:41:47 +02:00
qgroup-verify.h btrfs-progs: move ctree.c to kernel-shared/ 2020-08-31 17:01:05 +02:00