btrfs: return -EUCLEAN if extent item is missing when searching inline backref
authorFilipe Manana <fdmanana@suse.com>
Fri, 8 Sep 2023 17:20:32 +0000 (18:20 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 12 Oct 2023 14:44:06 +0000 (16:44 +0200)
At lookup_inline_extent_backref() when trying to insert an inline backref,
if we don't find the extent item we log an error and then return -EIO.
This error code is confusing because there was actually no IO error, and
this means we have some corruption, either caused by a bug or something
like a memory bitflip for example. So change the error code from -EIO to
-EUCLEAN.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c

index 3670595742107d661d3b019fa49be8b60ef22425..ae4380a7f88ea141a998982165c5f94be5fa3276 100644 (file)
@@ -851,7 +851,7 @@ again:
 "extent item not found for insert, bytenr %llu num_bytes %llu parent %llu root_objectid %llu owner %llu offset %llu",
                          bytenr, num_bytes, parent, root_objectid, owner,
                          offset);
-               ret = -EIO;
+               ret = -EUCLEAN;
                goto out;
        }