[lvm-devel] master - lvconvert: reuse cache validation

Zdenek Kabelac zkabelac at fedoraproject.org
Mon Oct 6 13:32:59 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=a0cfc5eee2763b7e68c028b517db1825c1f3cce7
Commit:        a0cfc5eee2763b7e68c028b517db1825c1f3cce7
Parent:        5a366918432bf4f825d2ddbb00780943c0761a0d
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Fri Oct 3 18:52:08 2014 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Oct 6 15:18:05 2014 +0200

lvconvert: reuse cache validation

Validation is now already in
validate_lv_cache_create() so reuse it.

Also properly rename var origin -> origin_lv.
---
 tools/lvconvert.c |   41 +++++------------------------------------
 1 files changed, 5 insertions(+), 36 deletions(-)

diff --git a/tools/lvconvert.c b/tools/lvconvert.c
index 03118cb..11a10f7 100644
--- a/tools/lvconvert.c
+++ b/tools/lvconvert.c
@@ -3168,50 +3168,19 @@ revert_new_lv:
  * Convert origin into a cache LV by attaching a cache pool.
  */
 static int _lvconvert_cache(struct cmd_context *cmd,
-			    struct logical_volume *origin,
+			    struct logical_volume *origin_lv,
 			    struct lvconvert_params *lp)
 {
 	struct logical_volume *pool_lv = lp->pool_data_lv;
 	struct logical_volume *cache_lv;
 
-	if (origin == pool_lv) {
-		log_error("Can't use same LV %s for cache pool and cache volume.",
-			  display_lvname(pool_lv));
-		return 0;
-	}
-
-	if (lv_is_pool(origin) || lv_is_cache_type(origin)) {
-		log_error("Can't cache pool or cache type volume %s.",
-			  display_lvname(origin));
-		return 0;
-	}
-
-	/* We support conversion of _tdata */
-	if (!lv_is_visible(origin) && !lv_is_thin_pool_data(origin)) {
-		log_error("Can't convert internal LV %s.", display_lvname(origin));
-		return 0;
-	}
-
-	/*
-	 * Only linear, striped or raid supported.
-	 * FIXME Tidy up all these type restrictions.
-	 */
-	if (lv_is_cache_origin(origin) ||
-	    lv_is_mirror_type(origin) ||
-	    lv_is_thin_volume(origin) || lv_is_thin_pool_metadata(origin) ||
-	    lv_is_origin(origin) || lv_is_merging_origin(origin) ||
-	    lv_is_cow(origin) || lv_is_merging_cow(origin) ||
-	    lv_is_external_origin(origin) ||
-	    lv_is_virtual(origin)) {
-		log_error("Cache is not supported with origin LV %s type.",
-			  display_lvname(origin));
-		return 0;
-	}
+	if (!validate_lv_cache_create(pool_lv, origin_lv))
+		return_0;
 
-	if (!archive(origin->vg))
+	if (!archive(origin_lv->vg))
 		return_0;
 
-	if (!(cache_lv = lv_cache_create(pool_lv, origin)))
+	if (!(cache_lv = lv_cache_create(pool_lv, origin_lv)))
 		return_0;
 
 	if (!lv_update_and_reload(cache_lv))




More information about the lvm-devel mailing list