diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2017-03-09 16:24:28 +0100 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2017-03-10 19:33:01 +0100 |
commit | 4d0793f0ec7c02fb4bec9ad092746e6fe027823f (patch) | |
tree | d329b047dfea132c629fbb865d92c12d77c1f674 /tools/lvcreate.c | |
parent | 7c52d550e92ec82a44b7652c285642d46a35ca69 (diff) | |
download | lvm2-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.c | 23 |
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) || |