]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: don't silently ignore unexpected extent type when replaying log
authorFilipe Manana <fdmanana@suse.com>
Tue, 3 Jun 2025 21:06:17 +0000 (22:06 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 19 Jun 2025 13:20:47 +0000 (15:20 +0200)
If there's an unexpected (invalid) extent type, we just silently ignore
it. This means a corruption or some bug somewhere, so instead return
-EUCLEAN to the caller, making log replay fail, and print an error message
with relevant information.

Reviewed-by: Boris Burkov <boris@bur.io>
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/tree-log.c

index 21d2f3dded513b4ae8864a0a124dcd0d361a5d8c..858b609e292cb9414663a16c76b522bb788be601 100644 (file)
@@ -668,7 +668,10 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans,
                extent_end = ALIGN(start + size,
                                   fs_info->sectorsize);
        } else {
-               return 0;
+               btrfs_err(fs_info,
+                 "unexpected extent type=%d root=%llu inode=%llu offset=%llu",
+                         found_type, btrfs_root_id(root), key->objectid, key->offset);
+               return -EUCLEAN;
        }
 
        inode = read_one_inode(root, key->objectid);