]> sourceware.org Git - lvm2.git/commitdiff
raid_manip: 'vgreduce --removemissing --force ...' segfaults on raid0 LV
authorHeinz Mauelshagen <heinzm@redhat.com>
Tue, 12 Jul 2016 15:55:01 +0000 (17:55 +0200)
committerHeinz Mauelshagen <heinzm@redhat.com>
Tue, 12 Jul 2016 15:55:01 +0000 (17:55 +0200)
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

index 9ac061f34f9be044c305ae8f6048f570261d6a79..2ef47b2c6e467806bd699ab7186d5174f983a779 100644 (file)
@@ -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)));
This page took 0.045877 seconds and 5 git commands to generate.