diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2015-09-11 20:58:58 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2015-09-11 21:52:27 +0200 |
commit | 729b035edd923554275ac7b3bc446b57f0e9f0d5 (patch) | |
tree | 8734608f6dd6df5312947f6ffc90d8a47804a030 | |
parent | fda853b573920ccefda23ad97f54d7b4dafaa9f1 (diff) | |
download | lvm2-729b035edd923554275ac7b3bc446b57f0e9f0d5.tar.gz |
pool: validate pool_metadata has proper suffix
-rw-r--r-- | 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 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; + } } } |