diff options
author | Anand Jain <anand.jain@oracle.com> | 2018-04-25 19:01:43 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2018-05-28 18:07:27 +0200 |
commit | 41a6e8913cdff6b30ac53a24641259d117c0b101 (patch) | |
tree | 1e27218bccdeb150cade9ee04c7c98767261b79e /fs/btrfs/volumes.c | |
parent | ed23467b180421d37f9a6ce26c8fa8f03aef0a4a (diff) |
btrfs: move btrfs_raid_group values to btrfs_raid_attr table
Add a new member struct btrfs_raid_attr::bg_flag so that
btrfs_raid_array can maintain the bit map flag of the raid type, and
so we can drop btrfs_raid_group.
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/volumes.c')
-rw-r--r-- | fs/btrfs/volumes.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 6abd0ebb3fea..4fc22a696206 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -41,6 +41,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { .devs_increment = 2, .ncopies = 2, .raid_name = "raid10", + .bg_flag = BTRFS_BLOCK_GROUP_RAID10, }, [BTRFS_RAID_RAID1] = { .sub_stripes = 1, @@ -51,6 +52,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { .devs_increment = 2, .ncopies = 2, .raid_name = "raid1", + .bg_flag = BTRFS_BLOCK_GROUP_RAID1, }, [BTRFS_RAID_DUP] = { .sub_stripes = 1, @@ -61,6 +63,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { .devs_increment = 1, .ncopies = 2, .raid_name = "dup", + .bg_flag = BTRFS_BLOCK_GROUP_DUP, }, [BTRFS_RAID_RAID0] = { .sub_stripes = 1, @@ -71,6 +74,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { .devs_increment = 1, .ncopies = 1, .raid_name = "raid0", + .bg_flag = BTRFS_BLOCK_GROUP_RAID0, }, [BTRFS_RAID_SINGLE] = { .sub_stripes = 1, @@ -81,6 +85,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { .devs_increment = 1, .ncopies = 1, .raid_name = "single", + .bg_flag = 0, }, [BTRFS_RAID_RAID5] = { .sub_stripes = 1, @@ -91,6 +96,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { .devs_increment = 1, .ncopies = 2, .raid_name = "raid5", + .bg_flag = BTRFS_BLOCK_GROUP_RAID5, }, [BTRFS_RAID_RAID6] = { .sub_stripes = 1, @@ -101,6 +107,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { .devs_increment = 1, .ncopies = 3, .raid_name = "raid6", + .bg_flag = BTRFS_BLOCK_GROUP_RAID6, }, }; @@ -112,16 +119,6 @@ const char *get_raid_name(enum btrfs_raid_types type) return btrfs_raid_array[type].raid_name; } -const u64 btrfs_raid_group[BTRFS_NR_RAID_TYPES] = { - [BTRFS_RAID_RAID10] = BTRFS_BLOCK_GROUP_RAID10, - [BTRFS_RAID_RAID1] = BTRFS_BLOCK_GROUP_RAID1, - [BTRFS_RAID_DUP] = BTRFS_BLOCK_GROUP_DUP, - [BTRFS_RAID_RAID0] = BTRFS_BLOCK_GROUP_RAID0, - [BTRFS_RAID_SINGLE] = 0, - [BTRFS_RAID_RAID5] = BTRFS_BLOCK_GROUP_RAID5, - [BTRFS_RAID_RAID6] = BTRFS_BLOCK_GROUP_RAID6, -}; - /* * Table to convert BTRFS_RAID_* to the error code if minimum number of devices * condition is not met. Zero means there's no corresponding @@ -1899,7 +1896,7 @@ static int btrfs_check_raid_min_devices(struct btrfs_fs_info *fs_info, } while (read_seqretry(&fs_info->profiles_lock, seq)); for (i = 0; i < BTRFS_NR_RAID_TYPES; i++) { - if (!(all_avail & btrfs_raid_group[i])) + if (!(all_avail & btrfs_raid_array[i].bg_flag)) continue; if (num_devices < btrfs_raid_array[i].devs_min) { |