aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2015-09-11 20:58:58 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2015-09-11 21:52:27 +0200
commit729b035edd923554275ac7b3bc446b57f0e9f0d5 (patch)
tree8734608f6dd6df5312947f6ffc90d8a47804a030
parentfda853b573920ccefda23ad97f54d7b4dafaa9f1 (diff)
downloadlvm2-729b035edd923554275ac7b3bc446b57f0e9f0d5.tar.gz
pool: validate pool_metadata has proper suffix
-rw-r--r--lib/metadata/merge.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/metadata/merge.c b/lib/metadata/merge.c
index a3e6af109..351ab39a4 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;
+ }
}
}