[lvm-devel] [PATCH 0 of 13] LVM add 'mirrored' log type

Takahiro Yasui tyasui at redhat.com
Mon Feb 22 09:09:29 UTC 2010


Jonathan Brassow wrote:
> I've fixed the segfaults Taka reported.  I've also begun to go through
> and fix the remaining issues with handling device failures in the
> various different scenarios.  I could use some help testing all the
> different variations.  I've described below some of the different
> permutations that will now exist.  I will be going through and testing
> these as well.

'lvconvert --repair' doen't work and canuses *deadlock*. when a VG contains
two PVs and one of PVs failed; This is a situation that a mirror leg and
one of mirrored logs broke at the same time.

When one of mirrored logs broke, I/Os to mirrored log are blocked and
kmirrord can't make forward until the log is fixed. However, lvocnvert
command tries to fix mirror legs before a mirrored log if a mirror leg
also broke.

During the procedure to fix a mirror leg, lv_suspend() is called in
_remove_mirror_images() and lv_suspend() which calls kernel function,
dm_suspend(), doesn't finish. Rough call trace is as follows:

  dm_suspend()
    mirror_presuspend()
      flush_workqueue()
        -> waiting kmirrored
           -> waiting I/O to its log

I think that an error recovery of a log device should be done before
mirror legs are recovered.

Thanks,
Taka




More information about the lvm-devel mailing list