[lvm-devel] master - cache: get and set cache params

Zdenek Kabelac zkabelac at sourceware.org
Fri Mar 10 18:35:38 UTC 2017


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=c598e65de988663d2174f9d9b00408a1d50a075e
Commit:        c598e65de988663d2174f9d9b00408a1d50a075e
Parent:        861992d874a7f42619559bf3768750977b4b1446
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Thu Mar 9 16:20:44 2017 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Mar 10 19:33:00 2017 +0100

cache: get and set cache params

---
 tools/lvchange.c  |    3 ++-
 tools/lvconvert.c |   21 ++++-----------------
 tools/lvcreate.c  |    1 +
 tools/toollib.c   |    1 +
 tools/toollib.h   |    1 +
 5 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/tools/lvchange.c b/tools/lvchange.c
index d0d67b3..3804041 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 45c5a49..f7210cc 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 63b2c6d..80c97b0 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 4d746ea..3c00045 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 7c588fc..22ae491 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);




More information about the lvm-devel mailing list