[lvm-devel] master - cache: validate for locked

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


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

cache: validate for locked

Add extra safety.
---
 WHATS_NEW                  |    1 +
 lib/metadata/cache_manip.c |   12 ++++++++++++
 2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index f5b7931..8b9cf6f 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.112 - 
 =====================================
+  Add extra validate for locked lv within validate_lv_cache_create().
   Add internal lvseg_name() function.
   Skip trying to file lock virtual internal vg name.
   Fix selection on {vg,lv}_permissions fields to properly match selection criteria.
diff --git a/lib/metadata/cache_manip.c b/lib/metadata/cache_manip.c
index 0a6daf6..837c651 100644
--- a/lib/metadata/cache_manip.c
+++ b/lib/metadata/cache_manip.c
@@ -104,6 +104,12 @@ int validate_lv_cache_create(const struct logical_volume *pool_lv,
 			return 0;
 		}
 
+		if (lv_is_locked(pool_lv)) {
+			log_error("Cannot use locked cache pool %s.",
+				  display_lvname(pool_lv));
+			return 0;
+		}
+
 		if (origin_lv == pool_lv) {
 			log_error("Can't use same LV %s for cache pool and cache volume.",
 				  display_lvname(pool_lv));
@@ -119,6 +125,12 @@ int validate_lv_cache_create(const struct logical_volume *pool_lv,
 		}
 	}
 
+	if (lv_is_locked(origin_lv)) {
+		log_error("Cannot use locked origin volume %s.",
+			  display_lvname(origin_lv));
+		return 0;
+	}
+
 	/* For now we only support conversion of thin pool data volume */
 	if (!lv_is_visible(origin_lv) && !lv_is_thin_pool_data(origin_lv)) {
 		log_error("Can't convert internal LV %s.", display_lvname(origin_lv));




More information about the lvm-devel mailing list