From 035276ab83bae4349e06a3158f288fa75e0bdf9c Mon Sep 17 00:00:00 2001 From: Heinz Mauelshagen Date: Tue, 7 Apr 2015 14:32:25 +0200 Subject: [PATCH] lvcreate: do not silently accept '-m #' with raid4/5/6 If the user provides '-m #' (# > 0) with mappings raid4/5/6, the command silently creates '#mirrors * #stripes + #parity' image component pairs. Patch rejects '-m #' altogether for those mappings in order to avoid LV creation with unexpected layout. - resolves bz#1209445 --- tools/lvcreate.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/lvcreate.c b/tools/lvcreate.c index 3f7fe6f78..e41f76ccb 100644 --- a/tools/lvcreate.c +++ b/tools/lvcreate.c @@ -474,6 +474,14 @@ static int _read_raid_params(struct cmd_context *cmd, return 0; } + if (arg_count(cmd, mirrors_ARG) && segtype_is_raid(lp->segtype) && + strcmp(lp->segtype->name, SEG_TYPE_NAME_RAID1) && + strcmp(lp->segtype->name, SEG_TYPE_NAME_RAID10)) { + log_error("Mirror argument cannot be used with segment type, %s", + lp->segtype->name); + return 0; + } + /* Rates are recorded in kiB/sec/disk, not sectors/sec/disk */ lp->min_recovery_rate = arg_uint_value(cmd, minrecoveryrate_ARG, 0) / 2; lp->max_recovery_rate = arg_uint_value(cmd, maxrecoveryrate_ARG, 0) / 2; -- 2.43.5