From: Zdenek Kabelac Date: Thu, 9 Mar 2017 15:20:44 +0000 (+0100) Subject: cache: get and set cache params X-Git-Tag: v2_02_169~142 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=c598e65de988663d2174f9d9b00408a1d50a075e;p=lvm2.git cache: get and set cache params --- diff --git a/tools/lvchange.c b/tools/lvchange.c index d0d67b37e..3804041f3 100644 --- a/tools/lvchange.c +++ b/tools/lvchange.c @@ -627,11 +627,12 @@ static int _lvchange_cache(struct cmd_context *cmd, struct logical_volume *lv) struct dm_config_tree *settings = NULL; struct lv_segment *pool_seg = first_seg(lv); int r = 0, is_clean; + uint32_t chunk_size = 0; /* FYI: lvchange does NOT support its change */ if (lv_is_cache(lv)) pool_seg = first_seg(pool_seg->pool_lv); - if (!get_cache_params(cmd, &mode, &name, &settings)) + if (!get_cache_params(cmd, &chunk_size, &mode, &name, &settings)) goto_out; if ((mode != CACHE_MODE_UNSELECTED) && diff --git a/tools/lvconvert.c b/tools/lvconvert.c index 45c5a4920..f7210cc5f 100644 --- a/tools/lvconvert.c +++ b/tools/lvconvert.c @@ -3046,7 +3046,7 @@ static int _lvconvert_to_pool(struct cmd_context *cmd, cache_mode_t cache_mode = 0; const char *policy_name = NULL; - if (!get_cache_params(cmd, &cache_mode, &policy_name, &policy_settings)) + if (!get_cache_params(cmd, &chunk_size, &cache_mode, &policy_name, &policy_settings)) goto_bad; if (cache_mode && @@ -3172,6 +3172,7 @@ static int _lvconvert_to_cache_vol(struct cmd_context *cmd, struct logical_volume *cachepool_lv) { struct logical_volume *cache_lv; + uint32_t chunk_size = 0; cache_mode_t cache_mode = 0; const char *policy_name = NULL; struct dm_config_tree *policy_settings = NULL; @@ -3180,7 +3181,7 @@ static int _lvconvert_to_cache_vol(struct cmd_context *cmd, if (!validate_lv_cache_create_pool(cachepool_lv)) return_0; - if (!get_cache_params(cmd, &cache_mode, &policy_name, &policy_settings)) + if (!get_cache_params(cmd, &chunk_size, &cache_mode, &policy_name, &policy_settings)) goto_bad; if (!archive(lv->vg)) @@ -3189,10 +3190,7 @@ static int _lvconvert_to_cache_vol(struct cmd_context *cmd, if (!(cache_lv = lv_cache_create(cachepool_lv, lv))) goto_bad; - if (!cache_set_cache_mode(first_seg(cache_lv), cache_mode)) - goto_bad; - - if (!cache_set_policy(first_seg(cache_lv), policy_name, policy_settings)) + if (!cache_set_params(first_seg(cache_lv), chunk_size, cache_mode, policy_name, policy_settings)) goto_bad; cache_check_for_warns(first_seg(cache_lv)); @@ -3814,7 +3812,6 @@ static int _lvconvert_to_cache_vol_single(struct cmd_context *cmd, struct volume_group *vg = lv->vg; struct logical_volume *cachepool_lv; const char *cachepool_name; - uint32_t chunk_size = 0; if (!(cachepool_name = arg_str_value(cmd, cachepool_ARG, NULL))) goto_out; @@ -3863,16 +3860,6 @@ static int _lvconvert_to_cache_vol_single(struct cmd_context *cmd, goto out; } - if (arg_is_set(cmd, chunksize_ARG)) - chunk_size = arg_uint_value(cmd, chunksize_ARG, 0); - if (!chunk_size) - chunk_size = first_seg(cachepool_lv)->chunk_size; - - /* FIXME: why is chunk_size read and checked if it's not used? */ - - if (!validate_lv_cache_chunk_size(cachepool_lv, chunk_size)) - goto_out; - /* Note: requires rather deep know-how to skip zeroing */ if (!arg_is_set(cmd, zero_ARG)) { if (!arg_is_set(cmd, yes_ARG) && diff --git a/tools/lvcreate.c b/tools/lvcreate.c index 63b2c6dce..80c97b0c2 100644 --- a/tools/lvcreate.c +++ b/tools/lvcreate.c @@ -633,6 +633,7 @@ static int _read_cache_params(struct cmd_context *cmd, return 1; if (!get_cache_params(cmd, + &lp->chunk_size, &lp->cache_mode, &lp->policy_name, &lp->policy_settings)) diff --git a/tools/toollib.c b/tools/toollib.c index 4d746ea6b..3c0004513 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -1347,6 +1347,7 @@ static int _validate_cachepool_params(const char *name, } int get_cache_params(struct cmd_context *cmd, + uint32_t *chunk_size, cache_mode_t *cache_mode, const char **name, struct dm_config_tree **settings) diff --git a/tools/toollib.h b/tools/toollib.h index 7c588fce4..22ae4913c 100644 --- a/tools/toollib.h +++ b/tools/toollib.h @@ -221,6 +221,7 @@ int get_stripe_params(struct cmd_context *cmd, const struct segment_type *segtyp unsigned *stripes_supplied, unsigned *stripe_size_supplied); int get_cache_params(struct cmd_context *cmd, + uint32_t *chunk_size, cache_mode_t *cache_mode, const char **name, struct dm_config_tree **settings);