diff options
author | Jonathan Earl Brassow <jbrassow@redhat.com> | 2012-02-22 17:14:38 +0000 |
---|---|---|
committer | Jonathan Earl Brassow <jbrassow@redhat.com> | 2012-02-22 17:14:38 +0000 |
commit | 0e92b70f714f32d9ef78e106e0e1aa89d15a9f90 (patch) | |
tree | c54a77f10eba73dd1f1af0b5005f2d1821236d30 /lib/metadata/lv_manip.c | |
parent | 7a5a5cb06fbdbe338f7481780803aa7c3777c326 (diff) | |
download | lvm2-0e92b70f714f32d9ef78e106e0e1aa89d15a9f90.tar.gz lvm2-0e92b70f714f32d9ef78e106e0e1aa89d15a9f90.tar.xz lvm2-0e92b70f714f32d9ef78e106e0e1aa89d15a9f90.zip |
*** empty log message ***
Diffstat (limited to 'lib/metadata/lv_manip.c')
-rw-r--r-- | lib/metadata/lv_manip.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c index 5d3fba5d..a8a52a49 100644 --- a/lib/metadata/lv_manip.c +++ b/lib/metadata/lv_manip.c @@ -3061,7 +3061,8 @@ struct dm_list *build_parallel_areas_from_lv(struct logical_volume *lv, struct dm_list *parallel_areas; struct seg_pvs *spvs; uint32_t current_le = 0; - struct lv_segment * uninitialized_var(seg); + uint32_t raid_multiple; + struct lv_segment *seg = first_seg(lv); if (!(parallel_areas = dm_pool_alloc(cmd->mem, sizeof(*parallel_areas)))) { log_error("parallel_areas allocation failed"); @@ -3100,7 +3101,9 @@ struct dm_list *build_parallel_areas_from_lv(struct logical_volume *lv, return_NULL; current_le = spvs->le + spvs->len; - } while (current_le < lv->le_count); + raid_multiple = (seg->segtype->parity_devs) ? + seg->area_count - seg->segtype->parity_devs : 1; + } while ((current_le * raid_multiple) < lv->le_count); /* FIXME Merge adjacent segments with identical PV lists (avoids need for contiguous allocation attempts between successful allocations) */ |