btrfs-progs: Allow open_ctree to return fs_info even chunk tree is corrupted
authorQu Wenruo <quwenruo@cn.fujitsu.com>
Mon, 22 Feb 2016 06:59:54 +0000 (14:59 +0800)
committerDavid Sterba <dsterba@suse.com>
Fri, 26 Feb 2016 16:27:58 +0000 (17:27 +0100)
commit43318324d20cccccfacf2e82ac10e27eefb6cc95
treea15dbe5de507252b055409ed00d23334c3f181f1
parente2e0dae926b2174c368ee6dbed610d9f98c193a5
btrfs-progs: Allow open_ctree to return fs_info even chunk tree is corrupted

Current open_ctree_fs_info() won't return anything if chunk tree root is
corrupted.
This makes some function, like btrfs-find-root, unable to find any older
chunk tree root, even it is possible to use system_chunk_array in super
block.

And at least two users in mail list has reported such heavily chunk
corruption.
Although we have 'btrfs rescue chunk-recovery' but it's too time
consuming and sometimes not able to cope with a specific filesystem
corruption.

This patch adds a new open ctree flag,
OPEN_CTREE_IGNORE_CHUNK_TREE_ERROR, allowing fs_info to be returned from
open_ctree_fs_info() even there is no valid tree root in it.

Also adds a new close_ctree() variant, close_ctree_fs_info() to handle
possible fs_info without any root.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
[ adjusted error messages ]
Signed-off-by: David Sterba <dsterba@suse.com>
ctree.h
disk-io.c
disk-io.h