1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

cache: get and set cache params

This commit is contained in:
Zdenek Kabelac 2017-03-09 16:20:44 +01:00
parent 861992d874
commit c598e65de9
5 changed files with 9 additions and 18 deletions

View File

@ -627,11 +627,12 @@ static int _lvchange_cache(struct cmd_context *cmd, struct logical_volume *lv)
struct dm_config_tree *settings = NULL; struct dm_config_tree *settings = NULL;
struct lv_segment *pool_seg = first_seg(lv); struct lv_segment *pool_seg = first_seg(lv);
int r = 0, is_clean; int r = 0, is_clean;
uint32_t chunk_size = 0; /* FYI: lvchange does NOT support its change */
if (lv_is_cache(lv)) if (lv_is_cache(lv))
pool_seg = first_seg(pool_seg->pool_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; goto_out;
if ((mode != CACHE_MODE_UNSELECTED) && if ((mode != CACHE_MODE_UNSELECTED) &&

View File

@ -3046,7 +3046,7 @@ static int _lvconvert_to_pool(struct cmd_context *cmd,
cache_mode_t cache_mode = 0; cache_mode_t cache_mode = 0;
const char *policy_name = NULL; 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; goto_bad;
if (cache_mode && 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 *cachepool_lv)
{ {
struct logical_volume *cache_lv; struct logical_volume *cache_lv;
uint32_t chunk_size = 0;
cache_mode_t cache_mode = 0; cache_mode_t cache_mode = 0;
const char *policy_name = NULL; const char *policy_name = NULL;
struct dm_config_tree *policy_settings = 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)) if (!validate_lv_cache_create_pool(cachepool_lv))
return_0; 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; goto_bad;
if (!archive(lv->vg)) 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))) if (!(cache_lv = lv_cache_create(cachepool_lv, lv)))
goto_bad; goto_bad;
if (!cache_set_cache_mode(first_seg(cache_lv), cache_mode)) if (!cache_set_params(first_seg(cache_lv), chunk_size, cache_mode, policy_name, policy_settings))
goto_bad;
if (!cache_set_policy(first_seg(cache_lv), policy_name, policy_settings))
goto_bad; goto_bad;
cache_check_for_warns(first_seg(cache_lv)); 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 volume_group *vg = lv->vg;
struct logical_volume *cachepool_lv; struct logical_volume *cachepool_lv;
const char *cachepool_name; const char *cachepool_name;
uint32_t chunk_size = 0;
if (!(cachepool_name = arg_str_value(cmd, cachepool_ARG, NULL))) if (!(cachepool_name = arg_str_value(cmd, cachepool_ARG, NULL)))
goto_out; goto_out;
@ -3863,16 +3860,6 @@ static int _lvconvert_to_cache_vol_single(struct cmd_context *cmd,
goto out; 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 */ /* Note: requires rather deep know-how to skip zeroing */
if (!arg_is_set(cmd, zero_ARG)) { if (!arg_is_set(cmd, zero_ARG)) {
if (!arg_is_set(cmd, yes_ARG) && if (!arg_is_set(cmd, yes_ARG) &&

View File

@ -633,6 +633,7 @@ static int _read_cache_params(struct cmd_context *cmd,
return 1; return 1;
if (!get_cache_params(cmd, if (!get_cache_params(cmd,
&lp->chunk_size,
&lp->cache_mode, &lp->cache_mode,
&lp->policy_name, &lp->policy_name,
&lp->policy_settings)) &lp->policy_settings))

View File

@ -1347,6 +1347,7 @@ static int _validate_cachepool_params(const char *name,
} }
int get_cache_params(struct cmd_context *cmd, int get_cache_params(struct cmd_context *cmd,
uint32_t *chunk_size,
cache_mode_t *cache_mode, cache_mode_t *cache_mode,
const char **name, const char **name,
struct dm_config_tree **settings) struct dm_config_tree **settings)

View File

@ -221,6 +221,7 @@ int get_stripe_params(struct cmd_context *cmd, const struct segment_type *segtyp
unsigned *stripes_supplied, unsigned *stripe_size_supplied); unsigned *stripes_supplied, unsigned *stripe_size_supplied);
int get_cache_params(struct cmd_context *cmd, int get_cache_params(struct cmd_context *cmd,
uint32_t *chunk_size,
cache_mode_t *cache_mode, cache_mode_t *cache_mode,
const char **name, const char **name,
struct dm_config_tree **settings); struct dm_config_tree **settings);