[lvm-devel] master - cache: better error message

Zdenek Kabelac zkabelac at fedoraproject.org
Fri Oct 24 14:39:57 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e901a87a69bf8573e441790ebca2ca9376aaf8a6
Commit:        e901a87a69bf8573e441790ebca2ca9376aaf8a6
Parent:        6e57dbfcaa3fdc2aabe7c05f95268a35d6b198ca
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Mon Oct 20 14:53:48 2014 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Oct 24 16:39:31 2014 +0200

cache: better error message

---
 lib/metadata/cache_manip.c |    4 ++--
 tools/lvcreate.c           |   21 ++++++++++-----------
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/lib/metadata/cache_manip.c b/lib/metadata/cache_manip.c
index 837c651..6aad50d 100644
--- a/lib/metadata/cache_manip.c
+++ b/lib/metadata/cache_manip.c
@@ -148,8 +148,8 @@ int validate_lv_cache_create(const struct logical_volume *pool_lv,
 	    lv_is_cow(origin_lv) || lv_is_merging_cow(origin_lv) ||
 	    lv_is_external_origin(origin_lv) ||
 	    lv_is_virtual(origin_lv)) {
-		log_error("Cache is not supported with origin LV %s type.",
-			  display_lvname(origin_lv));
+		log_error("Cache is not supported with %s segment type of the original logical volume %s.",
+			  first_seg(origin_lv)->segtype->name, display_lvname(origin_lv));
 		return 0;
 	}
 
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 5a4bced..d849f93 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -61,21 +61,21 @@ static int _lvcreate_name_params(struct lvcreate_params *lp,
 
 	if (seg_is_cache(lp)) {
 		/*
-		 * We allowed somewhat hard to 'parse' syntax
-		 * (usage of lvcreate to convert LV to a cached LV).
-		 * So let's try to do our best to avoid wrong steps.
+		 * 2 ways of cache usage for lvcreate -H -l1 vg/lv
+		 *
+		 * vg/lv is existing cache pool:
+		 *       cached LV is created using this cache pool
+		 * vg/lv is not cache pool so it is cache origin
+		 *       origin is cached with created cache pool
 		 *
 		 * We are looking for the vgname or cache pool or cache origin LV.
 		 *
-		 * We store the lv name in 'lp->pool', but
-		 * it must be accessed later (when we can look-up the
-		 * LV in the VG) whether it is truly the cache pool
-		 * or whether it is the origin for cached LV.
+		 * lv name is stored in origin_name and pool_name and
+		 * later with opened VG it's decided what should happen.
 		 */
 		if (!argc) {
 			if (!lp->pool_name) {
-				/* Don't advertise we could handle cache origin */
-				log_error("Please specify a logical volume to act as the cache pool.");
+				log_error("Please specify a logical volume to act as the cache pool or origin.");
 				return 0;
 			}
 		} else {
@@ -85,7 +85,7 @@ static int _lvcreate_name_params(struct lvcreate_params *lp,
 				if (!_set_vg_name(lp, vg_name))
 					return_0;
 			} else {
-				/* Lets pretend it's cache origin for now */
+				/* Assume it's cache origin for now */
 				lp->origin_name = vg_name;
 				if (!validate_lvname_param(cmd, &lp->vg_name, &lp->origin_name))
 					return_0;
@@ -94,7 +94,6 @@ static int _lvcreate_name_params(struct lvcreate_params *lp,
 					if (strcmp(lp->pool_name, lp->origin_name)) {
 						log_error("Unsupported syntax, cannot use cache origin %s and --cachepool %s.",
 							  lp->origin_name, lp->pool_name);
-						/* Stop here, only older form remains supported */
 						return 0;
 					}
 					lp->origin_name = NULL;




More information about the lvm-devel mailing list