Commit f9fbcaa2 authored by Anand Jain's avatar Anand Jain Committed by David Sterba

btrfs: move btrfs_raid_mindev_errorvalues to btrfs_raid_attr table

Add a new member struct btrfs_raid_attr::mindev_error so that
btrfs_raid_array can maintain the error code to return if the minimum
number of devices condition is not met while trying to delete a device
in the given raid. And so we can drop btrfs_raid_mindev_error.
Signed-off-by: default avatarAnand Jain <anand.jain@oracle.com>
Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 41a6e891
...@@ -42,6 +42,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { ...@@ -42,6 +42,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
.ncopies = 2, .ncopies = 2,
.raid_name = "raid10", .raid_name = "raid10",
.bg_flag = BTRFS_BLOCK_GROUP_RAID10, .bg_flag = BTRFS_BLOCK_GROUP_RAID10,
.mindev_error = BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
}, },
[BTRFS_RAID_RAID1] = { [BTRFS_RAID_RAID1] = {
.sub_stripes = 1, .sub_stripes = 1,
...@@ -53,6 +54,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { ...@@ -53,6 +54,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
.ncopies = 2, .ncopies = 2,
.raid_name = "raid1", .raid_name = "raid1",
.bg_flag = BTRFS_BLOCK_GROUP_RAID1, .bg_flag = BTRFS_BLOCK_GROUP_RAID1,
.mindev_error = BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET,
}, },
[BTRFS_RAID_DUP] = { [BTRFS_RAID_DUP] = {
.sub_stripes = 1, .sub_stripes = 1,
...@@ -64,6 +66,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { ...@@ -64,6 +66,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
.ncopies = 2, .ncopies = 2,
.raid_name = "dup", .raid_name = "dup",
.bg_flag = BTRFS_BLOCK_GROUP_DUP, .bg_flag = BTRFS_BLOCK_GROUP_DUP,
.mindev_error = 0,
}, },
[BTRFS_RAID_RAID0] = { [BTRFS_RAID_RAID0] = {
.sub_stripes = 1, .sub_stripes = 1,
...@@ -75,6 +78,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { ...@@ -75,6 +78,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
.ncopies = 1, .ncopies = 1,
.raid_name = "raid0", .raid_name = "raid0",
.bg_flag = BTRFS_BLOCK_GROUP_RAID0, .bg_flag = BTRFS_BLOCK_GROUP_RAID0,
.mindev_error = 0,
}, },
[BTRFS_RAID_SINGLE] = { [BTRFS_RAID_SINGLE] = {
.sub_stripes = 1, .sub_stripes = 1,
...@@ -86,6 +90,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { ...@@ -86,6 +90,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
.ncopies = 1, .ncopies = 1,
.raid_name = "single", .raid_name = "single",
.bg_flag = 0, .bg_flag = 0,
.mindev_error = 0,
}, },
[BTRFS_RAID_RAID5] = { [BTRFS_RAID_RAID5] = {
.sub_stripes = 1, .sub_stripes = 1,
...@@ -97,6 +102,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { ...@@ -97,6 +102,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
.ncopies = 2, .ncopies = 2,
.raid_name = "raid5", .raid_name = "raid5",
.bg_flag = BTRFS_BLOCK_GROUP_RAID5, .bg_flag = BTRFS_BLOCK_GROUP_RAID5,
.mindev_error = BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET,
}, },
[BTRFS_RAID_RAID6] = { [BTRFS_RAID_RAID6] = {
.sub_stripes = 1, .sub_stripes = 1,
...@@ -108,6 +114,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { ...@@ -108,6 +114,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
.ncopies = 3, .ncopies = 3,
.raid_name = "raid6", .raid_name = "raid6",
.bg_flag = BTRFS_BLOCK_GROUP_RAID6, .bg_flag = BTRFS_BLOCK_GROUP_RAID6,
.mindev_error = BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET,
}, },
}; };
...@@ -119,21 +126,6 @@ const char *get_raid_name(enum btrfs_raid_types type) ...@@ -119,21 +126,6 @@ const char *get_raid_name(enum btrfs_raid_types type)
return btrfs_raid_array[type].raid_name; return btrfs_raid_array[type].raid_name;
} }
/*
* Table to convert BTRFS_RAID_* to the error code if minimum number of devices
* condition is not met. Zero means there's no corresponding
* BTRFS_ERROR_DEV_*_NOT_MET value.
*/
const int btrfs_raid_mindev_error[BTRFS_NR_RAID_TYPES] = {
[BTRFS_RAID_RAID10] = BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
[BTRFS_RAID_RAID1] = BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET,
[BTRFS_RAID_DUP] = 0,
[BTRFS_RAID_RAID0] = 0,
[BTRFS_RAID_SINGLE] = 0,
[BTRFS_RAID_RAID5] = BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET,
[BTRFS_RAID_RAID6] = BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET,
};
static int init_first_rw_device(struct btrfs_trans_handle *trans, static int init_first_rw_device(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info); struct btrfs_fs_info *fs_info);
static int btrfs_relocate_sys_chunks(struct btrfs_fs_info *fs_info); static int btrfs_relocate_sys_chunks(struct btrfs_fs_info *fs_info);
...@@ -1900,7 +1892,7 @@ static int btrfs_check_raid_min_devices(struct btrfs_fs_info *fs_info, ...@@ -1900,7 +1892,7 @@ static int btrfs_check_raid_min_devices(struct btrfs_fs_info *fs_info,
continue; continue;
if (num_devices < btrfs_raid_array[i].devs_min) { if (num_devices < btrfs_raid_array[i].devs_min) {
int ret = btrfs_raid_mindev_error[i]; int ret = btrfs_raid_array[i].mindev_error;
if (ret) if (ret)
return ret; return ret;
......
...@@ -329,12 +329,12 @@ struct btrfs_raid_attr { ...@@ -329,12 +329,12 @@ struct btrfs_raid_attr {
int tolerated_failures; /* max tolerated fail devs */ int tolerated_failures; /* max tolerated fail devs */
int devs_increment; /* ndevs has to be a multiple of this */ int devs_increment; /* ndevs has to be a multiple of this */
int ncopies; /* how many copies to data has */ int ncopies; /* how many copies to data has */
int mindev_error; /* error code if min devs requisite is unmet */
const char raid_name[8]; /* name of the raid */ const char raid_name[8]; /* name of the raid */
u64 bg_flag; /* block group flag of the raid */ u64 bg_flag; /* block group flag of the raid */
}; };
extern const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES]; extern const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES];
extern const int btrfs_raid_mindev_error[BTRFS_NR_RAID_TYPES];
struct map_lookup { struct map_lookup {
u64 type; u64 type;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment