exofs: Remove unused data_map member from exofs_sb_info
The struct pnfs_osd_data_map data_map member of exofs_sb_info was never used after mount. In fact all it's members were duplicated by the ore_layout structure. So just remove the duplicated information. Also removed some stupid, but perfectly supported, restrictions on layout parameters. The case where num_devices is not divisible by mirror_count+1 is perfectly fine since the rotating device view will eventually use all the devices it can get. Signed-off-by: Boaz Harrosh <bharrosh@panasas.com> Signed-off-by: Benny Halevy <bhalevy@tonian.com>
This commit is contained in:
@@ -66,9 +66,6 @@ struct exofs_sb_info {
|
|||||||
u32 s_next_generation; /* next gen # to use */
|
u32 s_next_generation; /* next gen # to use */
|
||||||
atomic_t s_curr_pending; /* number of pending commands */
|
atomic_t s_curr_pending; /* number of pending commands */
|
||||||
|
|
||||||
struct pnfs_osd_data_map data_map; /* Default raid to use
|
|
||||||
* FIXME: Needed ?
|
|
||||||
*/
|
|
||||||
struct ore_layout layout; /* Default files layout */
|
struct ore_layout layout; /* Default files layout */
|
||||||
struct ore_comp one_comp; /* id & cred of partition id=0*/
|
struct ore_comp one_comp; /* id & cred of partition id=0*/
|
||||||
struct ore_components oc; /* comps for the partition */
|
struct ore_components oc; /* comps for the partition */
|
||||||
|
@@ -481,64 +481,51 @@ static int _read_and_match_data_map(struct exofs_sb_info *sbi, unsigned numdevs,
|
|||||||
{
|
{
|
||||||
u64 stripe_length;
|
u64 stripe_length;
|
||||||
|
|
||||||
sbi->data_map.odm_num_comps =
|
sbi->layout.stripe_unit =
|
||||||
le32_to_cpu(dt->dt_data_map.cb_num_comps);
|
|
||||||
sbi->data_map.odm_stripe_unit =
|
|
||||||
le64_to_cpu(dt->dt_data_map.cb_stripe_unit);
|
le64_to_cpu(dt->dt_data_map.cb_stripe_unit);
|
||||||
sbi->data_map.odm_group_width =
|
sbi->layout.group_width =
|
||||||
le32_to_cpu(dt->dt_data_map.cb_group_width);
|
le32_to_cpu(dt->dt_data_map.cb_group_width);
|
||||||
sbi->data_map.odm_group_depth =
|
sbi->layout.group_depth =
|
||||||
le32_to_cpu(dt->dt_data_map.cb_group_depth);
|
le32_to_cpu(dt->dt_data_map.cb_group_depth);
|
||||||
sbi->data_map.odm_mirror_cnt =
|
sbi->layout.mirrors_p1 =
|
||||||
le32_to_cpu(dt->dt_data_map.cb_mirror_cnt);
|
le32_to_cpu(dt->dt_data_map.cb_mirror_cnt) + 1;
|
||||||
sbi->data_map.odm_raid_algorithm =
|
sbi->layout.raid_algorithm =
|
||||||
le32_to_cpu(dt->dt_data_map.cb_raid_algorithm);
|
le32_to_cpu(dt->dt_data_map.cb_raid_algorithm);
|
||||||
|
|
||||||
/* FIXME: Only raid0 for now. if not so, do not mount */
|
/* FIXME: Only raid0 for now. if not so, do not mount */
|
||||||
if (sbi->data_map.odm_num_comps != numdevs) {
|
if (sbi->layout.raid_algorithm != PNFS_OSD_RAID_0) {
|
||||||
EXOFS_ERR("odm_num_comps(%u) != numdevs(%u)\n",
|
|
||||||
sbi->data_map.odm_num_comps, numdevs);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
if (sbi->data_map.odm_raid_algorithm != PNFS_OSD_RAID_0) {
|
|
||||||
EXOFS_ERR("Only RAID_0 for now\n");
|
EXOFS_ERR("Only RAID_0 for now\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (0 != (numdevs % (sbi->data_map.odm_mirror_cnt + 1))) {
|
if (numdevs < (sbi->layout.group_width * sbi->layout.mirrors_p1)) {
|
||||||
EXOFS_ERR("Data Map wrong, numdevs=%d mirrors=%d\n",
|
EXOFS_ERR("Data Map wrong, "
|
||||||
numdevs, sbi->data_map.odm_mirror_cnt);
|
"numdevs=%d < group_width=%d * mirrors=%d\n",
|
||||||
|
numdevs, sbi->layout.group_width,
|
||||||
|
sbi->layout.mirrors_p1);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != (sbi->data_map.odm_stripe_unit & ~PAGE_MASK)) {
|
if (0 != (sbi->layout.stripe_unit & ~PAGE_MASK)) {
|
||||||
EXOFS_ERR("Stripe Unit(0x%llx)"
|
EXOFS_ERR("Stripe Unit(0x%llx)"
|
||||||
" must be Multples of PAGE_SIZE(0x%lx)\n",
|
" must be Multples of PAGE_SIZE(0x%lx)\n",
|
||||||
_LLU(sbi->data_map.odm_stripe_unit), PAGE_SIZE);
|
_LLU(sbi->layout.stripe_unit), PAGE_SIZE);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
sbi->layout.stripe_unit = sbi->data_map.odm_stripe_unit;
|
if (sbi->layout.group_width) {
|
||||||
sbi->layout.mirrors_p1 = sbi->data_map.odm_mirror_cnt + 1;
|
|
||||||
|
|
||||||
if (sbi->data_map.odm_group_width) {
|
|
||||||
sbi->layout.group_width = sbi->data_map.odm_group_width;
|
|
||||||
sbi->layout.group_depth = sbi->data_map.odm_group_depth;
|
|
||||||
if (!sbi->layout.group_depth) {
|
if (!sbi->layout.group_depth) {
|
||||||
EXOFS_ERR("group_depth == 0 && group_width != 0\n");
|
EXOFS_ERR("group_depth == 0 && group_width != 0\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
sbi->layout.group_count = sbi->data_map.odm_num_comps /
|
sbi->layout.group_count = numdevs / sbi->layout.mirrors_p1 /
|
||||||
sbi->layout.mirrors_p1 /
|
sbi->layout.group_width;
|
||||||
sbi->data_map.odm_group_width;
|
|
||||||
} else {
|
} else {
|
||||||
if (sbi->data_map.odm_group_depth) {
|
if (sbi->layout.group_depth) {
|
||||||
printk(KERN_NOTICE "Warning: group_depth ignored "
|
printk(KERN_NOTICE "Warning: group_depth ignored "
|
||||||
"group_width == 0 && group_depth == %d\n",
|
"group_width == 0 && group_depth == %lld\n",
|
||||||
sbi->data_map.odm_group_depth);
|
_LLU(sbi->layout.group_depth));
|
||||||
sbi->data_map.odm_group_depth = 0;
|
|
||||||
}
|
}
|
||||||
sbi->layout.group_width = sbi->data_map.odm_num_comps /
|
sbi->layout.group_width = numdevs / sbi->layout.mirrors_p1;
|
||||||
sbi->layout.mirrors_p1;
|
|
||||||
sbi->layout.group_depth = -1;
|
sbi->layout.group_depth = -1;
|
||||||
sbi->layout.group_count = 1;
|
sbi->layout.group_count = 1;
|
||||||
}
|
}
|
||||||
@@ -558,7 +545,7 @@ static int _read_and_match_data_map(struct exofs_sb_info *sbi, unsigned numdevs,
|
|||||||
sbi->layout.group_width,
|
sbi->layout.group_width,
|
||||||
_LLU(sbi->layout.group_depth),
|
_LLU(sbi->layout.group_depth),
|
||||||
sbi->layout.mirrors_p1,
|
sbi->layout.mirrors_p1,
|
||||||
sbi->data_map.odm_raid_algorithm);
|
sbi->layout.raid_algorithm);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -34,6 +34,8 @@ struct ore_comp {
|
|||||||
|
|
||||||
struct ore_layout {
|
struct ore_layout {
|
||||||
/* Our way of looking at the data_map */
|
/* Our way of looking at the data_map */
|
||||||
|
enum pnfs_osd_raid_algorithm4
|
||||||
|
raid_algorithm;
|
||||||
unsigned stripe_unit;
|
unsigned stripe_unit;
|
||||||
unsigned mirrors_p1;
|
unsigned mirrors_p1;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user