btrfs: factor out devs_max setting in __btrfs_alloc_chunk
authorDavid Sterba <dsterba@suse.com>
Fri, 17 May 2019 09:43:38 +0000 (11:43 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 1 Jul 2019 11:34:57 +0000 (13:34 +0200)
Merge the repeated code before the if-else block.

Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index e9caba25ddb61f38f3e6eb82f85227ee8b04659c..2e0860d14ad2f19a00fc9eb870fd5b6dbe659d55 100644 (file)
@@ -4956,6 +4956,8 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
        sub_stripes = btrfs_raid_array[index].sub_stripes;
        dev_stripes = btrfs_raid_array[index].dev_stripes;
        devs_max = btrfs_raid_array[index].devs_max;
+       if (!devs_max)
+               devs_max = BTRFS_MAX_DEVS(info);
        devs_min = btrfs_raid_array[index].devs_min;
        devs_increment = btrfs_raid_array[index].devs_increment;
        ncopies = btrfs_raid_array[index].ncopies;
@@ -4964,8 +4966,6 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
        if (type & BTRFS_BLOCK_GROUP_DATA) {
                max_stripe_size = SZ_1G;
                max_chunk_size = BTRFS_MAX_DATA_CHUNK_SIZE;
-               if (!devs_max)
-                       devs_max = BTRFS_MAX_DEVS(info);
        } else if (type & BTRFS_BLOCK_GROUP_METADATA) {
                /* for larger filesystems, use larger metadata chunks */
                if (fs_devices->total_rw_bytes > 50ULL * SZ_1G)
@@ -4973,13 +4973,9 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
                else
                        max_stripe_size = SZ_256M;
                max_chunk_size = max_stripe_size;
-               if (!devs_max)
-                       devs_max = BTRFS_MAX_DEVS(info);
        } else if (type & BTRFS_BLOCK_GROUP_SYSTEM) {
                max_stripe_size = SZ_32M;
                max_chunk_size = 2 * max_stripe_size;
-               if (!devs_max)
-                       devs_max = BTRFS_MAX_DEVS_SYS_CHUNK;
        } else {
                btrfs_err(info, "invalid chunk type 0x%llx requested",
                       type);