From 9c2757349370cb0b098fb3a3d137107543818fd7 Mon Sep 17 00:00:00 2001 From: Heinz Mauelshagen Date: Tue, 12 Jul 2016 17:55:01 +0200 Subject: [PATCH] raid_manip: 'vgreduce --removemissing --force ...' segfaults on raid0 LV An unconditional access to the non-existing MetaLV of a raid0 LV in lv_raid_remove_missing() was causing the segfault. Only call log_debug() on replacements of existing MetaLVs. - resolves rhbz1354646 --- lib/metadata/raid_manip.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c index 9ac061f34..2ef47b2c6 100644 --- a/lib/metadata/raid_manip.c +++ b/lib/metadata/raid_manip.c @@ -3090,8 +3090,11 @@ int lv_raid_remove_missing(struct logical_volume *lv) (!seg->meta_areas || !seg_metalv(seg, s) || !lv_is_partial(seg_metalv(seg, s)))) continue; - log_debug("Replacing %s and %s segments with error target", - seg_lv(seg, s)->name, seg_metalv(seg, s)->name); + log_debug("Replacing %s segments with error target", + display_lvname(seg_lv(seg, s))); + if (seg->meta_areas && seg_metalv(seg, s)) + log_debug("Replacing %s segments with error target", + display_lvname(seg_metalv(seg, s))); if (!replace_lv_with_error_segment(seg_lv(seg, s))) { log_error("Failed to replace %s's extents with error target.", display_lvname(seg_lv(seg, s))); -- 2.43.5