summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2020-06-24 13:52:53 +0200
committerHeinz Mauelshagen <heinzm@redhat.com>2020-06-24 13:52:56 +0200
commit2cf0f90780bed64cb4062eb6dfa714ed03eecfb7 (patch)
tree72cdfc1b57945411a8abe9363f9d4c17bd8ba58c
parent3bd9d81b29fb8ba490d87b3557861bf00047855d (diff)
downloadlvm2-2cf0f90780bed64cb4062eb6dfa714ed03eecfb7.tar.gz
lv{resize,extend,reduce}: reject size change on 2-legged raid5*
Reject size changing request in to avoid 'Bus error' and display hint to convert to more stripes. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1784351
-rw-r--r--lib/metadata/lv_manip.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index c1c86aa4c..142435bbb 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -5066,6 +5066,7 @@ static int _lvresize_check(struct logical_volume *lv,
struct lvresize_params *lp)
{
struct volume_group *vg = lv->vg;
+ struct lv_segment *seg = first_seg(lv);
if (lv_is_external_origin(lv)) {
/*
@@ -5089,6 +5090,12 @@ static int _lvresize_check(struct logical_volume *lv,
return 0;
}
+ if (seg && seg_is_any_raid5(seg) && seg->area_count < 3) {
+ log_error("Cannot resize %s LV %s. Convert to more stripes first.",
+ lvseg_name(seg), display_lvname(lv));
+ return 0;
+ }
+
if (lv_is_raid(lv) &&
lp->resize == LV_REDUCE) {
unsigned attrs;