mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
btrfs: send: do not BUG_ON() on unexpected symlink data extent
There's really no need to BUG_ON() if we find a symlink with an extent that is not inline or is compressed. We can just make send fail with an error (-EUCLEAN) and log an informative error message, so just do that instead of BUG_ON(). Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
fc4026e26b
commit
6f3eb72a1f
@ -1774,9 +1774,21 @@ static int read_symlink(struct btrfs_root *root,
|
||||
ei = btrfs_item_ptr(path->nodes[0], path->slots[0],
|
||||
struct btrfs_file_extent_item);
|
||||
type = btrfs_file_extent_type(path->nodes[0], ei);
|
||||
if (unlikely(type != BTRFS_FILE_EXTENT_INLINE)) {
|
||||
ret = -EUCLEAN;
|
||||
btrfs_crit(root->fs_info,
|
||||
"send: found symlink extent that is not inline, ino %llu root %llu extent type %d",
|
||||
ino, btrfs_root_id(root), type);
|
||||
goto out;
|
||||
}
|
||||
compression = btrfs_file_extent_compression(path->nodes[0], ei);
|
||||
BUG_ON(type != BTRFS_FILE_EXTENT_INLINE);
|
||||
BUG_ON(compression);
|
||||
if (unlikely(compression != BTRFS_COMPRESS_NONE)) {
|
||||
ret = -EUCLEAN;
|
||||
btrfs_crit(root->fs_info,
|
||||
"send: found symlink extent with compression, ino %llu root %llu compression type %d",
|
||||
ino, btrfs_root_id(root), compression);
|
||||
goto out;
|
||||
}
|
||||
|
||||
off = btrfs_file_extent_inline_start(ei);
|
||||
len = btrfs_file_extent_ram_bytes(path->nodes[0], ei);
|
||||
|
Loading…
Reference in New Issue
Block a user