diff options
author | Heinz Mauelshagen <heinzm@redhat.com> | 2016-07-12 17:55:01 +0200 |
---|---|---|
committer | Heinz Mauelshagen <heinzm@redhat.com> | 2016-07-12 17:55:01 +0200 |
commit | 9c2757349370cb0b098fb3a3d137107543818fd7 (patch) | |
tree | bba543b9a89639e4bee3fc6b01e53d7ad3f29955 | |
parent | c77c59f3d9a97b43cd2bd9be1c5892aea384f857 (diff) | |
download | lvm2-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.c | 7 |
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))); |