summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJonathan Brassow <jbrassow@redhat.com>2012-08-08 12:32:27 -0500
committerJonathan Brassow <jbrassow@redhat.com>2012-08-08 12:32:27 -0500
commitde3b1c4506ff502f00a360a83800f35a31e1b42e (patch)
tree9da327be5e881793bb246a4385174a74bf13a39b /tools
parentb61be643701d05bb12e0b2e32085f312a1f121bf (diff)
downloadlvm2-de3b1c4506ff502f00a360a83800f35a31e1b42e.tar.gz
lvm2-de3b1c4506ff502f00a360a83800f35a31e1b42e.tar.xz
lvm2-de3b1c4506ff502f00a360a83800f35a31e1b42e.zip
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.
Diffstat (limited to 'tools')
-rw-r--r--tools/lvcreate.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 48977d74..da2b925e 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -539,6 +539,27 @@ static int _read_raid_params(struct lvcreate_params *lp,
}
/*
+ * 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:
* lp->nosync