diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c index f99788fac..961417965 100644 --- a/lib/metadata/raid_manip.c +++ b/lib/metadata/raid_manip.c @@ -2389,7 +2389,7 @@ static int _reshape_requested(const struct logical_volume *lv, const struct segm if (seg_is_any_raid10(seg) && seg->area_count > 2 && stripes && stripes < seg->area_count - seg->segtype->parity_devs) { log_error("Can't remove stripes from raid10"); - goto err; + return 2; } if (data_copies != seg->data_copies) { @@ -2400,22 +2400,20 @@ static int _reshape_requested(const struct logical_volume *lv, const struct segm /* Change layout (e.g. raid5_ls -> raid5_ra) keeping # of stripes */ if (seg->segtype != segtype) { if (stripes && stripes != _data_rimages_count(seg, seg->area_count)) - goto err; + return 2; return 1; } if (stripes && stripes == _data_rimages_count(seg, seg->area_count) && - stripe_size == seg->stripe_size) { + stripe_size == seg->stripe_size && + region_size == seg->region_size) { log_error("LV %s already has %u stripes.", display_lvname(lv), stripes); return 2; } return (stripes || stripe_size) ? 1 : 0; - -err: - return 2; } /* diff --git a/test/shell/lvconvert-raid-regionsize.sh b/test/shell/lvconvert-raid-regionsize.sh index 9baa99a95..7a6c7f0b2 100644 --- a/test/shell/lvconvert-raid-regionsize.sh +++ b/test/shell/lvconvert-raid-regionsize.sh @@ -27,7 +27,7 @@ function _test_regionsize local vg=$4 local lv=$5 - lvconvert --yes -R $regionsize $vg/$lv + lvconvert --type $type --yes -R $regionsize $vg/$lv [ $? -ne 0 ] && return 1 check lv_field $vg/$lv regionsize "$regionsize_str" fsck -fn "$DM_DEV_DIR/$vg/$lv"