summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2016-07-12 17:55:01 +0200
committerHeinz Mauelshagen <heinzm@redhat.com>2016-07-12 17:55:01 +0200
commit9c2757349370cb0b098fb3a3d137107543818fd7 (patch)
treebba543b9a89639e4bee3fc6b01e53d7ad3f29955
parentc77c59f3d9a97b43cd2bd9be1c5892aea384f857 (diff)
downloadlvm2-9c2757349370cb0b098fb3a3d137107543818fd7.tar.gz
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
-rw-r--r--lib/metadata/raid_manip.c7
1 files 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)));