summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2014-10-31 13:37:39 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2014-11-03 14:19:32 +0100
commitc1ee6d4ffc7d520e015a8e44f50392510fb85167 (patch)
tree5a18e68dac117ee8ea0926967e727dcdea1476e8
parented2a0560ad23f3de0b63e4c48ce91e6d5c744c23 (diff)
downloadlvm2-c1ee6d4ffc7d520e015a8e44f50392510fb85167.tar.gz
lvcreate: tollerate defaults
lvcreate -m0 and -Mn goes with anything. Read ahead works either with pools or thin/cache, but not with both.
-rw-r--r--tools/lvcreate.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 6b8c4b5ff..b6768ba07 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -653,7 +653,7 @@ static int _lvcreate_params(struct cmd_context *cmd,
segtype_str = "thin";
else if (arg_is_set(cmd, virtualsize_ARG)) {
if (arg_is_set(cmd, virtualoriginsize_ARG))
- segtype_str = "snapshot";
+ segtype_str = "snapshot"; /* --virtualoriginsize incompatible with pools */
else
segtype_str = find_config_tree_str(cmd, global_sparse_segtype_default_CFG, NULL);
} else if (arg_uint_value(cmd, mirrors_ARG, 0)) {
@@ -685,9 +685,12 @@ static int _lvcreate_params(struct cmd_context *cmd,
contiguous_ARG,\
ignoreactivationskip_ARG,\
ignoremonitoring_ARG,\
+ mirrors_ARG,\
name_ARG,\
noudevsync_ARG,\
permission_ARG,\
+ persistent_ARG,\
+ readahead_ARG,\
setactivationskip_ARG,\
test_ARG,\
type_ARG
@@ -701,14 +704,12 @@ static int _lvcreate_params(struct cmd_context *cmd,
mirrorlog_ARG
#define MIRROR_RAID_ARGS \
- mirrors_ARG,\
nosync_ARG,\
regionsize_ARG
#define PERSISTENT_ARGS \
major_ARG,\
- minor_ARG,\
- persistent_ARG
+ minor_ARG
#define POOL_ARGS \
pooldatasize_ARG,\
@@ -1210,13 +1211,6 @@ static int _check_thin_parameters(struct volume_group *vg, struct lvcreate_param
}
if (!seg_is_thin_volume(lp) && !lp->snapshot) {
- /* Not creating thin volume nor snapshot */
- if (arg_from_list_is_set(vg->cmd, "may only be given when creating a new thin Logical volume or snapshot",
- permission_ARG,
- persistent_ARG,
- readahead_ARG,
- -1))
- return_0;
if (!lp->create_pool) {
/* Not even creating thin pool? */
log_error("Please specify device size(s).");
@@ -1285,7 +1279,14 @@ static int _check_pool_parameters(struct cmd_context *cmd,
}
/* When creating just pool the pool_name needs to be in lv_name */
lp->lv_name = lp->pool_name;
+ } else if (vg) {
+ /* FIXME: what better to do with --readahead and pools? */
+ if (arg_is_set(cmd, readahead_ARG)) {
+ log_error("Ambigous --readahead parameter specified. Please use either with pool or volume.");
+ return 0;
+ }
}
+
return 1;
}
/* Not creating new pool, but existing pool is needed */