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; + } } }