mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
lvconvert: update for thin a cache
Major update of lvconvert code to handle cache and thin. related targets. Code tries to unify handling of cache and thin pools. Better supports lvm2 syntax: lvconvert --type cache --cachepool vg/pool vg/cache lvconvert --type thin --thinpool vg/pool vg/extorg lvconvert --type cache-pool vg/pool lvconvert --type thin-pool vg/pool as well as: lvconvert --cache --cachepool vg/pool vg/cache lvconvert --thin --thinpool vg/pool vg/extorg lvconvert --cachepool vg/pool lvconvert --thinpool vg/pool While catching much more command line errors. (Yet couple paths still needs more tests) Detects as much cmdline errors prior opening VG. Uses single lvconvert_name_params to convert LV names. Detects as much incompatibilies in VG prior prompting. Uses single prompt to confirm whole conversion. TODO: still the code needs fixes...
This commit is contained in:
parent
fe3ea94e58
commit
970989655f
@ -1,5 +1,6 @@
|
||||
Version 2.02.108 -
|
||||
=================================
|
||||
Enhance lvconvert thin, thinpool, cache and cachepool command line support.
|
||||
Display 'C' only for cache and cache-pool target types in lvs.
|
||||
Prompt for confirmation before change LV into a snapshot exception store.
|
||||
Return proper error codes for some failing lvconvert funtions.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1661,18 +1661,9 @@ int get_pool_params(struct cmd_context *cmd,
|
||||
{
|
||||
int cache_pool = 0;
|
||||
|
||||
if (!strcmp("cache-pool", arg_str_value(cmd, type_ARG, "none")))
|
||||
if (!strcmp("cache-pool", arg_str_value(cmd, type_ARG, "")))
|
||||
cache_pool = 1;
|
||||
|
||||
if (!cache_pool && !arg_count(cmd, thinpool_ARG)) {
|
||||
/* Check for arguments that should only go with pools */
|
||||
if (arg_count(cmd, poolmetadata_ARG)) {
|
||||
log_error("'--poolmetadata' argument is only valid when"
|
||||
" converting to pool LVs.");
|
||||
return_0;
|
||||
}
|
||||
}
|
||||
|
||||
*passed_args = 0;
|
||||
if (!cache_pool && arg_count(cmd, zero_ARG)) {
|
||||
*passed_args |= PASS_ARG_ZERO;
|
||||
@ -1706,14 +1697,11 @@ int get_pool_params(struct cmd_context *cmd,
|
||||
return_0;
|
||||
|
||||
if (arg_count(cmd, poolmetadatasize_ARG)) {
|
||||
if (arg_sign_value(cmd, poolmetadatasize_ARG, SIGN_NONE) == SIGN_MINUS) {
|
||||
log_error("Negative pool metadata size is invalid.");
|
||||
return 0;
|
||||
}
|
||||
*passed_args |= PASS_ARG_POOL_METADATA_SIZE;
|
||||
}
|
||||
*pool_metadata_size = arg_uint64_value(cmd, poolmetadatasize_ARG,
|
||||
UINT64_C(0));
|
||||
} else if (arg_count(cmd, poolmetadata_ARG))
|
||||
*passed_args |= PASS_ARG_POOL_METADATA_SIZE; /* fixed size */
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user