btrfs-progs: Cleanup open-coded btrfs_chunk_item_size
authorQu Wenruo <quwenruo@cn.fujitsu.com>
Mon, 15 May 2017 08:27:38 +0000 (16:27 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 3 Jul 2017 11:35:10 +0000 (13:35 +0200)
In btrfs_check_chunk_valid() we calculate chunk item using open code,
use an existing helper btrfs_chunk_item_size() instead.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
volumes.c

index b350e25..62e23ae 100644 (file)
--- a/volumes.c
+++ b/volumes.c
@@ -1685,6 +1685,7 @@ int btrfs_check_chunk_valid(struct btrfs_root *root,
        u16 num_stripes;
        u16 sub_stripes;
        u64 type;
+       u32 chunk_ondisk_size;
 
        length = btrfs_chunk_length(leaf, chunk);
        stripe_len = btrfs_chunk_stripe_len(leaf, chunk);
@@ -1724,16 +1725,16 @@ int btrfs_check_chunk_valid(struct btrfs_root *root,
                        BTRFS_BLOCK_GROUP_PROFILE_MASK) & type);
                return -EIO;
        }
+
+       chunk_ondisk_size = btrfs_chunk_item_size(num_stripes);
        /*
         * Btrfs_chunk contains at least one stripe, and for sys_chunk
         * it can't exceed the system chunk array size
         * For normal chunk, it should match its chunk item size.
         */
        if (num_stripes < 1 ||
-           (slot == -1 && sizeof(struct btrfs_stripe) * num_stripes >
-            BTRFS_SYSTEM_CHUNK_ARRAY_SIZE) ||
-           (slot >= 0 && sizeof(struct btrfs_stripe) * (num_stripes - 1) >
-            btrfs_item_size_nr(leaf, slot))) {
+           (slot == -1 && chunk_ondisk_size > BTRFS_SYSTEM_CHUNK_ARRAY_SIZE) ||
+           (slot >= 0 && chunk_ondisk_size > btrfs_item_size_nr(leaf, slot))) {
                error("invalid num_stripes: %u", num_stripes);
                return -EIO;
        }