summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2016-07-27 18:20:48 +0200
committerHeinz Mauelshagen <heinzm@redhat.com>2016-07-27 18:20:48 +0200
commitc7b2654c25b8953c55638e7fab2cd0268845cbb3 (patch)
tree4864450fb28477887a76df6fcbca9271e2012eff
parent8f62b7bfe56c25efbbff5fea26ce29ac6378f08a (diff)
downloadlvm2-c7b2654c25b8953c55638e7fab2cd0268845cbb3.tar.gz
lvcreate.c: respect DEFAULT_RAID_MAX_IMAGES on creation of any RaidLV
-rw-r--r--tools/lvcreate.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 88e43e48c..1ed39e2b8 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -529,25 +529,12 @@ static int _read_mirror_and_raid_params(struct cmd_context *cmd,
struct lvcreate_params *lp)
{
int pagesize = lvm_getpagesize();
- unsigned max_images;
- const char *segtype_name;
+ unsigned max_images = segtype_is_raid(lp->segtype) ? DEFAULT_RAID_MAX_IMAGES :
+ DEFAULT_MIRROR_MAX_IMAGES;
/* Common mirror and raid params */
if (arg_is_set(cmd, mirrors_ARG)) {
lp->mirrors = arg_uint_value(cmd, mirrors_ARG, 0) + 1;
- if (segtype_is_raid1(lp->segtype)) {
- segtype_name = SEG_TYPE_NAME_RAID1;
- max_images = DEFAULT_RAID_MAX_IMAGES;
- } else {
- segtype_name = SEG_TYPE_NAME_MIRROR;
- max_images = DEFAULT_MIRROR_MAX_IMAGES;
- }
-
- if (lp->mirrors > max_images) {
- log_error("Only up to %u images in %s supported currently.",
- max_images, segtype_name);
- return 0;
- }
if ((lp->mirrors > 2) && segtype_is_raid10(lp->segtype)) {
/*
@@ -571,6 +558,12 @@ static int _read_mirror_and_raid_params(struct cmd_context *cmd,
/* Default to 2 mirrored areas if '--type mirror|raid1|raid10' */
lp->mirrors = seg_is_mirrored(lp) ? 2 : 1;
+ if (max(lp->mirrors, lp->stripes) > max_images) {
+ log_error("Only up to %u images in %s supported currently.",
+ max_images, lp->segtype->name);
+ return 0;
+ }
+
lp->nosync = arg_is_set(cmd, nosync_ARG);
if (!(lp->region_size = arg_uint_value(cmd, regionsize_ARG, 0)) &&