From de3b1c4506ff502f00a360a83800f35a31e1b42e Mon Sep 17 00:00:00 2001 From: Jonathan Brassow Date: Wed, 8 Aug 2012 12:32:27 -0500 Subject: RAID: Improve RAID argument handling. Disallow '-m' for RAID types that have no mirror component and disallow '-i' argument for RAID types that have no stripe component. --- tools/lvcreate.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'tools/lvcreate.c') diff --git a/tools/lvcreate.c b/tools/lvcreate.c index 48977d74..da2b925e 100644 --- a/tools/lvcreate.c +++ b/tools/lvcreate.c @@ -538,6 +538,27 @@ static int _read_raid_params(struct lvcreate_params *lp, return 0; } + /* + * RAID types without a mirror component do not take '-m' arg + */ + if (!segtype_is_mirrored(lp->segtype) && + arg_count(cmd, mirrors_ARG)) { + log_error("Mirror argument cannot be used with segment type, %s", + lp->segtype->name); + return 0; + } + + /* + * RAID1 does not take a stripe arg + */ + if ((lp->stripes > 1) && + segtype_is_mirrored(lp->segtype) && + strcmp(lp->segtype->name, "raid10")) { + log_error("Stripe argument cannot be used with segment type, %s", + lp->segtype->name); + return 0; + } + /* * _read_mirror_params is called before _read_raid_params * and already sets: -- cgit