forked from Mirrors/btrfs-progs
btrfs-progs: check: return value of check_extent_refs
In original check mode (without option --repair), check_extent_refs() always returns 0. Add a variable @err to record status while checking extents. At the end of check_extent_refs(), let it return -EIO if @err is non-zero. The test fsck/006-bad-root-items will fail after this patch and fixed by the following patches. Example: $ btrfs check bad-extent-inline-ref-type.raw Checking filesystem on bad-extent-inline-ref-type.raw UUID: 1942d6fe-617b-4499-9982-cc8ffae5447f checking extents corrupt extent record: key 29360128 169 16384 ref mismatch on [29360128 16384] extent item 0, found 1 Backref 29360128 parent 5 root 5 not found in extent tree backpointer mismatch on [29360128 16384] bad extent [29360128, 29376512), type mismatch with chunk checking free space cache checking fs roots checking csums checking root refs found 114688 bytes used, no error found total csum bytes: 0 total tree bytes: 114688 total fs tree bytes: 32768 total extent tree bytes: 16384 btree space waste bytes: 109471 file data blocks allocated: 0 referenced 0 Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> [ add note about the failing test, rename variable to err ] Signed-off-by: David Sterba <dsterba@suse.com>master
parent
3ebf6564cd
commit
eb4e4dbfea
|
@ -10829,6 +10829,7 @@ static int check_extent_refs(struct btrfs_root *root,
|
|||
struct cache_extent *cache;
|
||||
int ret = 0;
|
||||
int had_dups = 0;
|
||||
int err = 0;
|
||||
|
||||
if (repair) {
|
||||
/*
|
||||
|
@ -10972,6 +10973,7 @@ static int check_extent_refs(struct btrfs_root *root,
|
|||
cur_err = 1;
|
||||
}
|
||||
|
||||
err = cur_err;
|
||||
remove_cache_extent(extent_cache, cache);
|
||||
free_all_extent_backrefs(rec);
|
||||
if (!init_extent_tree && repair && (!cur_err || fix))
|
||||
|
@ -11004,7 +11006,10 @@ repair_abort:
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
return 0;
|
||||
|
||||
if (err)
|
||||
err = -EIO;
|
||||
return err;
|
||||
}
|
||||
|
||||
u64 calc_stripe_length(u64 type, u64 length, int num_stripes)
|
||||
|
|
Loading…
Reference in New Issue