summaryrefslogtreecommitdiff
path: root/tools/lvcreate.c
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2017-03-09 16:24:28 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2017-03-10 19:33:01 +0100
commit4d0793f0ec7c02fb4bec9ad092746e6fe027823f (patch)
treed329b047dfea132c629fbb865d92c12d77c1f674 /tools/lvcreate.c
parent7c52d550e92ec82a44b7652c285642d46a35ca69 (diff)
downloadlvm2-4d0793f0ec7c02fb4bec9ad092746e6fe027823f.tar.gz
pool: rework handling of passed args
As now we can properly recognize all paramerters for pool creation, we may drop PASS_ARG_ defines and rely on '_UNSELECTED' or 0 entries as being those without user given args. When setting are not given on command line - 'update' function fill them from profiles or configuration. For this 'profile' arg was needed to be passed around and since 'VG' itself is not needed, it's been all replaced with 'cmd, profile, extents_size' args.
Diffstat (limited to 'tools/lvcreate.c')
-rw-r--r--tools/lvcreate.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 01bd4b6bd..52f01a7d1 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -361,11 +361,22 @@ static int _update_extents_params(struct volume_group *vg,
extents_from_size(vg->cmd, lp->pool_metadata_size, vg->extent_size)))
return_0;
- if (!update_pool_params(lp->segtype, vg, lp->target_attr,
- lp->passed_args, lp->extents,
- &lp->pool_metadata_extents,
- &lp->thin_chunk_size_calc_policy, &lp->chunk_size,
- &lp->discards, &lp->zero))
+ if (segtype_is_thin_pool(lp->segtype) || segtype_is_thin(lp->segtype)) {
+ if (!update_thin_pool_params(vg->cmd, vg->profile, vg->extent_size,
+ lp->segtype, lp->target_attr,
+ lp->extents,
+ &lp->pool_metadata_extents,
+ &lp->thin_chunk_size_calc_policy,
+ &lp->chunk_size,
+ &lp->discards,
+ &lp->zero_new_blocks))
+ return_0;
+ } else if (!update_cache_pool_params(vg->cmd, vg->profile, vg->extent_size,
+ lp->segtype, lp->target_attr,
+ lp->extents,
+ &lp->pool_metadata_extents,
+ &lp->thin_chunk_size_calc_policy,
+ &lp->chunk_size))
return_0;
if (lcp->percent == PERCENT_FREE || lcp->percent == PERCENT_PVS) {
@@ -1078,7 +1089,7 @@ static int _lvcreate_params(struct cmd_context *cmd,
!_read_size_params(cmd, lp, lcp) ||
!get_stripe_params(cmd, lp->segtype, &lp->stripes, &lp->stripe_size, &lp->stripes_supplied, &lp->stripe_size_supplied) ||
(lp->create_pool &&
- !get_pool_params(cmd, lp->segtype, &lp->passed_args,
+ !get_pool_params(cmd, lp->segtype,
&lp->pool_metadata_size, &lp->pool_metadata_spare,
&lp->chunk_size, &lp->discards, &lp->zero_new_blocks)) ||
!_read_cache_params(cmd, lp) ||