btrfs-progs/check
Qu Wenruo 159f177cf9 btrfs-progs: check/original: Avoid infinite loop when failed to repair inode
Exposed by fuzz-tests/003-multi-check-unmounted/ on fuzzed image
bko-161811.raw.xz.

It's caused by the fact when check_fs_roots() finds tree root is
modified, it re-search tree root by goto again: label.
However again: label. will also reset root objectid to 0.
If we failed to repair one fs root but still modified tree root, we will
go into such infinite loop.

Fix it by recording which root we should skip for repair mode.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Gu Jinxiang <gujx@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2018-08-06 15:06:20 +02:00
..
main.c btrfs-progs: check/original: Avoid infinite loop when failed to repair inode 2018-08-06 15:06:20 +02:00
mode-common.c btrfs-progs: check: Initialize all filed of btrfs_inode_item in insert_inode_item() 2018-06-07 16:37:40 +02:00
mode-common.h btrfs-progs: check: enhanced progress indicator 2018-08-06 15:03:23 +02:00
mode-lowmem.c btrfs-progs: check: enhanced progress indicator 2018-08-06 15:03:23 +02:00
mode-lowmem.h btrfs-progs: check: lowmem: check symlinks with append/immutable flags 2018-06-07 16:37:38 +02:00
mode-original.h btrfs-progs: check/original: Detect and repair wrong inline ram_bytes 2018-08-06 15:00:44 +02:00