|
@@ -42,6 +42,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
|
|
|
.ncopies = 2,
|
|
|
.raid_name = "raid10",
|
|
|
.bg_flag = BTRFS_BLOCK_GROUP_RAID10,
|
|
|
+ .mindev_error = BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
|
|
|
},
|
|
|
[BTRFS_RAID_RAID1] = {
|
|
|
.sub_stripes = 1,
|
|
@@ -53,6 +54,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
|
|
|
.ncopies = 2,
|
|
|
.raid_name = "raid1",
|
|
|
.bg_flag = BTRFS_BLOCK_GROUP_RAID1,
|
|
|
+ .mindev_error = BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET,
|
|
|
},
|
|
|
[BTRFS_RAID_DUP] = {
|
|
|
.sub_stripes = 1,
|
|
@@ -64,6 +66,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
|
|
|
.ncopies = 2,
|
|
|
.raid_name = "dup",
|
|
|
.bg_flag = BTRFS_BLOCK_GROUP_DUP,
|
|
|
+ .mindev_error = 0,
|
|
|
},
|
|
|
[BTRFS_RAID_RAID0] = {
|
|
|
.sub_stripes = 1,
|
|
@@ -75,6 +78,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
|
|
|
.ncopies = 1,
|
|
|
.raid_name = "raid0",
|
|
|
.bg_flag = BTRFS_BLOCK_GROUP_RAID0,
|
|
|
+ .mindev_error = 0,
|
|
|
},
|
|
|
[BTRFS_RAID_SINGLE] = {
|
|
|
.sub_stripes = 1,
|
|
@@ -86,6 +90,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
|
|
|
.ncopies = 1,
|
|
|
.raid_name = "single",
|
|
|
.bg_flag = 0,
|
|
|
+ .mindev_error = 0,
|
|
|
},
|
|
|
[BTRFS_RAID_RAID5] = {
|
|
|
.sub_stripes = 1,
|
|
@@ -97,6 +102,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
|
|
|
.ncopies = 2,
|
|
|
.raid_name = "raid5",
|
|
|
.bg_flag = BTRFS_BLOCK_GROUP_RAID5,
|
|
|
+ .mindev_error = BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET,
|
|
|
},
|
|
|
[BTRFS_RAID_RAID6] = {
|
|
|
.sub_stripes = 1,
|
|
@@ -108,6 +114,7 @@ const struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = {
|
|
|
.ncopies = 3,
|
|
|
.raid_name = "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)
|
|
|
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,
|
|
|
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,
|
|
|
continue;
|
|
|
|
|
|
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)
|
|
|
return ret;
|