diff options
Diffstat (limited to 'fs/btrfs/ref-verify.c')
| -rw-r--r-- | fs/btrfs/ref-verify.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/fs/btrfs/ref-verify.c b/fs/btrfs/ref-verify.c index 3871c3a6c743..9f1858b42c0e 100644 --- a/fs/btrfs/ref-verify.c +++ b/fs/btrfs/ref-verify.c @@ -980,11 +980,18 @@ int btrfs_build_ref_tree(struct btrfs_fs_info *fs_info)  	if (!btrfs_test_opt(fs_info, REF_VERIFY))  		return 0; +	extent_root = btrfs_extent_root(fs_info, 0); +	/* If the extent tree is damaged we cannot ignore it (IGNOREBADROOTS). */ +	if (IS_ERR(extent_root)) { +		btrfs_warn(fs_info, "ref-verify: extent tree not available, disabling"); +		btrfs_clear_opt(fs_info->mount_opt, REF_VERIFY); +		return 0; +	} +  	path = btrfs_alloc_path();  	if (!path)  		return -ENOMEM; -	extent_root = btrfs_extent_root(fs_info, 0);  	eb = btrfs_read_lock_root_node(extent_root);  	level = btrfs_header_level(eb);  	path->nodes[level] = eb; | 
