[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