mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
btrfs: improve error reporting in lookup_inline_extent_backref
When iterating the backrefs in an extent item if the ptr to the 'current' backref record goes beyond the extent item a warning is generated and -ENOENT is returned. However what's more appropriate to debug such cases would be to return EUCLEAN and also print identifying information about the performed search as well as the current content of the leaf containing the possibly corrupted extent item. Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
0f07003b0f
commit
cf4f03c3be
@ -895,7 +895,13 @@ again:
|
||||
err = -ENOENT;
|
||||
while (1) {
|
||||
if (ptr >= end) {
|
||||
WARN_ON(ptr > end);
|
||||
if (ptr > end) {
|
||||
err = -EUCLEAN;
|
||||
btrfs_print_leaf(path->nodes[0]);
|
||||
btrfs_crit(fs_info,
|
||||
"overrun extent record at slot %d while looking for inline extent for root %llu owner %llu offset %llu parent %llu",
|
||||
path->slots[0], root_objectid, owner, offset, parent);
|
||||
}
|
||||
break;
|
||||
}
|
||||
iref = (struct btrfs_extent_inline_ref *)ptr;
|
||||
|
Loading…
Reference in New Issue
Block a user