1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Mirrors can be layered - as in the case of an converting 2-way

to 3-way mirror.  When conversion operations are performed on
these types of mirrors, log options can be confused/ignored.

In the case of a converting 3-way mirror, we have a top-level
2-way corelog mirror whose legs are 1) a 2-way disk-log mirror
and 2) a linear device.  If we wish to convert this 3-way mirror
to a 2-way mirror, the linear device is removed and the extra
top layer is eliminated.  If we also wished to convert the disk
log to a core log in the same step, ambiguity creeps in.  It is
somewhat obvious what the user wants - a 2-way mirror with a
corelog.  However, looking at the top level mirror before
compression, it seems that the mirror already has a core log.
This is why the operation seemed to fail.

This patch simply re-evaluates what mirrored_seg points to after
a compression and then considers the log argument.

This is a fix for bug 599898.
This commit is contained in:
Jonathan Earl Brassow 2010-06-21 16:12:33 +00:00
parent 548cc88947
commit a7d355a28c
2 changed files with 4 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.68 -
===============================
Honor log argument when down-converting stacked mirror.
Sleep to workaround clvmd -S race: socket closed early and server drops cmd.
Use early udev synchronisation and update of dev nodes for clustered mirrors.
Remove incorrect inclusion of kdev_t.h from cmirrord/functions.h.

View File

@ -851,6 +851,9 @@ static int _remove_mirror_images(struct logical_volume *lv,
log_error("Failed to add mirror images");
return 0;
}
mirrored_seg = first_seg(lv);
if (remove_log && !detached_log_lv)
detached_log_lv = detach_mirror_log(mirrored_seg);
} else if (new_area_count == 0) {
log_very_verbose("All mimages of %s are gone", lv->name);