1431
1431
int lv_refresh(struct cmd_context *cmd, struct logical_volume *lv)
1433
1433
if (!cmd->partial_activation && (lv->status & PARTIAL_LV)) {
1434
log_error("Refusing refresh of partial LV %s. Use --partial to override.",
1434
log_error("Refusing refresh of partial LV %s."
1435
" Use '--activationmode partial' to override.",
1654
* Read pool options from cmdline
1652
1656
int get_pool_params(struct cmd_context *cmd,
1653
struct profile *profile,
1657
const struct segment_type *segtype,
1654
1658
int *passed_args,
1655
int *chunk_size_calc_method,
1659
uint64_t *pool_metadata_size,
1660
int *pool_metadata_spare,
1656
1661
uint32_t *chunk_size,
1657
1662
thin_discards_t *discards,
1658
uint64_t *pool_metadata_size,
1663
if (!strcmp("cache-pool", arg_str_value(cmd, type_ARG, "none")))
1666
if (!cache_pool && !arg_count(cmd, thinpool_ARG)) {
1667
/* Check for arguments that should only go with pools */
1668
if (arg_count(cmd, poolmetadata_ARG)) {
1669
log_error("'--poolmetadata' argument is only valid when"
1670
" converting to pool LVs.");
1675
1665
*passed_args = 0;
1676
if (!cache_pool && arg_count(cmd, zero_ARG)) {
1677
*passed_args |= PASS_ARG_ZERO;
1678
*zero = strcmp(arg_str_value(cmd, zero_ARG, "y"), "n");
1679
log_very_verbose("Setting pool zeroing: %u", *zero);
1682
if (!cache_pool && arg_count(cmd, discards_ARG)) {
1683
*passed_args |= PASS_ARG_DISCARDS;
1684
*discards = (thin_discards_t) arg_uint_value(cmd, discards_ARG, 0);
1685
log_very_verbose("Setting pool discards: %s",
1686
get_pool_discards_name(*discards));
1667
if (segtype_is_thin_pool(segtype) || segtype_is_thin(segtype)) {
1668
if (arg_count(cmd, zero_ARG)) {
1669
*passed_args |= PASS_ARG_ZERO;
1670
*zero = strcmp(arg_str_value(cmd, zero_ARG, "y"), "n");
1671
log_very_verbose("Setting pool zeroing: %u", *zero);
1674
if (arg_count(cmd, discards_ARG)) {
1675
*passed_args |= PASS_ARG_DISCARDS;
1676
*discards = (thin_discards_t) arg_uint_value(cmd, discards_ARG, 0);
1677
log_very_verbose("Setting pool discards: %s",
1678
get_pool_discards_name(*discards));
1689
1682
if (arg_count(cmd, chunksize_ARG)) {
1691
1684
log_error("Negative chunk size is invalid.");
1694
1688
*passed_args |= PASS_ARG_CHUNK_SIZE;
1695
*chunk_size = arg_uint_value(cmd, chunksize_ARG, cache_pool ?
1696
DM_CACHE_MIN_DATA_BLOCK_SIZE :
1697
DM_THIN_MIN_DATA_BLOCK_SIZE);
1689
*chunk_size = arg_uint_value(cmd, chunksize_ARG, 0);
1698
1690
log_very_verbose("Setting pool chunk size: %s",
1699
1691
display_size(cmd, *chunk_size));
1703
//FIXME: add cache_pool support to update_profilable_pool_params
1704
if (!(*passed_args & PASS_ARG_CHUNK_SIZE))
1705
*chunk_size = DEFAULT_CACHE_POOL_CHUNK_SIZE * 2;
1706
} else if (!update_profilable_pool_params(cmd, profile, *passed_args,
1707
chunk_size_calc_method,
1708
chunk_size, discards, zero))
1711
1694
if (arg_count(cmd, poolmetadatasize_ARG)) {
1712
1695
if (arg_sign_value(cmd, poolmetadatasize_ARG, SIGN_NONE) == SIGN_MINUS) {
1713
1696
log_error("Negative pool metadata size is invalid.");
1700
if (arg_count(cmd, poolmetadata_ARG)) {
1701
log_error("Please specify either metadata logical volume or its size.");
1716
1705
*passed_args |= PASS_ARG_POOL_METADATA_SIZE;
1718
*pool_metadata_size = arg_uint64_value(cmd, poolmetadatasize_ARG,
1706
*pool_metadata_size = arg_uint64_value(cmd, poolmetadatasize_ARG,
1708
} else if (arg_count(cmd, poolmetadata_ARG))
1709
*passed_args |= PASS_ARG_POOL_METADATA_SIZE; /* fixed size */
1711
/* TODO: default in lvm.conf ? */
1712
*pool_metadata_spare = arg_int_value(cmd, poolmetadataspare_ARG,
1713
DEFAULT_POOL_METADATA_SPARE);
1775
if(arg_uint64_value(cmd, stripesize_ARG, 0) > STRIPE_SIZE_LIMIT * 2) {
1769
if (arg_uint64_value(cmd, stripesize_ARG, 0) > STRIPE_SIZE_LIMIT * 2) {
1776
1770
log_error("Stripe size cannot be larger than %s",
1777
1771
display_size(cmd, (uint64_t) STRIPE_SIZE_LIMIT));