[lvm-devel] master - pool: validate pool_metadata has proper suffix

Zdenek Kabelac zkabelac at fedoraproject.org
Fri Sep 11 19:54:35 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=729b035edd923554275ac7b3bc446b57f0e9f0d5
Commit:        729b035edd923554275ac7b3bc446b57f0e9f0d5
Parent:        fda853b573920ccefda23ad97f54d7b4dafaa9f1
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Fri Sep 11 20:58:58 2015 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Sep 11 21:52:27 2015 +0200

pool: validate pool_metadata has proper suffix

---
 lib/metadata/merge.c |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/lib/metadata/merge.c b/lib/metadata/merge.c
index a3e6af1..351ab39 100644
--- a/lib/metadata/merge.c
+++ b/lib/metadata/merge.c
@@ -119,12 +119,24 @@ int check_lv_segments(struct logical_volume *lv, int complete_vg)
 			inc_error_count;
 		}
 
-		if (lv_is_pool_metadata(lv) &&
-		    (!(seg2 = first_seg(lv)) || !(seg2 = find_pool_seg(seg2)) ||
-		     seg2->metadata_lv != lv)) {
-			log_error("LV %s: segment 1 pool metadata LV does not point back to same LV",
-				  lv->name);
-			inc_error_count;
+		if (lv_is_pool_metadata(lv)) {
+			if (!(seg2 = first_seg(lv)) || !(seg2 = find_pool_seg(seg2)) ||
+			    seg2->metadata_lv != lv) {
+				log_error("LV %s: segment 1 pool metadata LV does not point back to same LV",
+					  lv->name);
+				inc_error_count;
+			}
+			if (lv_is_thin_pool_metadata(lv) &&
+			    !strstr(lv->name, "_tmeta")) {
+				log_error("LV %s: thin pool metadata LV does not use _tmeta",
+					  lv->name);
+				inc_error_count;
+			} else if (lv_is_cache_pool_metadata(lv) &&
+				   !strstr(lv->name, "_cmeta")) {
+				log_error("LV %s: cache pool metadata LV does not use _cmeta",
+					  lv->name);
+				inc_error_count;
+			}
 		}
 	}
 




More information about the lvm-devel mailing list