btrfs: remove the extent item sanity checks in relocate_block_group
authorJosef Bacik <josef@toxicpanda.com>
Fri, 12 Mar 2021 20:25:27 +0000 (15:25 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Apr 2021 15:25:21 +0000 (17:25 +0200)
These checks are all taken care of for us by the tree checker code:

- the flags don't change or are updated consistently
- the v0 extent item format is invalid and caught in many other places
  too

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
[ update changelog ]
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/relocation.c

index 2d82e51..61f94f0 100644 (file)
@@ -3412,20 +3412,6 @@ static void unset_reloc_control(struct reloc_control *rc)
        mutex_unlock(&fs_info->reloc_mutex);
 }
 
-static int check_extent_flags(u64 flags)
-{
-       if ((flags & BTRFS_EXTENT_FLAG_DATA) &&
-           (flags & BTRFS_EXTENT_FLAG_TREE_BLOCK))
-               return 1;
-       if (!(flags & BTRFS_EXTENT_FLAG_DATA) &&
-           !(flags & BTRFS_EXTENT_FLAG_TREE_BLOCK))
-               return 1;
-       if ((flags & BTRFS_EXTENT_FLAG_DATA) &&
-           (flags & BTRFS_BLOCK_FLAG_FULL_BACKREF))
-               return 1;
-       return 0;
-}
-
 static noinline_for_stack
 int prepare_to_relocate(struct reloc_control *rc)
 {
@@ -3477,7 +3463,6 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
        struct btrfs_path *path;
        struct btrfs_extent_item *ei;
        u64 flags;
-       u32 item_size;
        int ret;
        int err = 0;
        int progress = 0;
@@ -3526,19 +3511,7 @@ restart:
 
                ei = btrfs_item_ptr(path->nodes[0], path->slots[0],
                                    struct btrfs_extent_item);
-               item_size = btrfs_item_size_nr(path->nodes[0], path->slots[0]);
-               if (item_size >= sizeof(*ei)) {
-                       flags = btrfs_extent_flags(path->nodes[0], ei);
-                       ret = check_extent_flags(flags);
-                       BUG_ON(ret);
-               } else if (unlikely(item_size == sizeof(struct btrfs_extent_item_v0))) {
-                       err = -EINVAL;
-                       btrfs_print_v0_err(trans->fs_info);
-                       btrfs_abort_transaction(trans, err);
-                       break;
-               } else {
-                       BUG();
-               }
+               flags = btrfs_extent_flags(path->nodes[0], ei);
 
                if (flags & BTRFS_EXTENT_FLAG_TREE_BLOCK) {
                        ret = add_tree_block(rc, &key, path, &blocks);