* [RFC][PATCH 0/4] dm-raid1: fix deadlock at suspend after suspend was interrupted (v2)
@ 2010-02-23 18:45 ` Takahiro Yasui
0 siblings, 0 replies; 2+ messages in thread
From: Takahiro Yasui @ 2010-02-23 18:45 UTC (permalink / raw)
To: device-mapper development; +Cc: k-ueda, LVM2 development
Hi,
This is an update patch set to fix deadlock on suspending of mirror device.
Based on the Ueda-san's suggestion, I updated the patch set so that a target's
resume handler is used instead of introducing new handler (cancel_presuspend).
ISSUE
=====
Suspend procedure on a dm-mirror device could cause deadlock on recovery_count
semaphore.
When mirror_presuspend is called, recovery_count semaphore is acquired in
dm_rh_stop_recovery() to stop recovery routine, but when an signal is caught
in dm_wait_for_completion() or an error occurred in in dm_suspend(),
the suspend process is interrupted without releasing recovery_count semaphore
of a mirror device. This means that another suspend is executed, and then
the suspend process gets stuck at dm_rh_stop_recovery().
When suspend procedure is interrupted, the device should work properly since
the status of the device is not "suspended."
SOLUTION
========
Restore the target's state change by calling a target's specific resume handler
when its suspend procedure was interrupted after its presuspend handler completed.
PATCH SET
=========
1/4: dm: restore presuspend status
2/4: dm-log: update resume method for interruption of presuspend
3/4: dm-crypt: update resume method for interruption of presuspend
4/4: cmirror: update resume method for interruption of presuspend
NOTE: The cmirror patch (4/4) hasn't been tested yet.
I appreciate your comments.
Thanks,
Taka
--
lvm-devel mailing list
lvm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/lvm-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* [RFC][PATCH 0/4] dm-raid1: fix deadlock at suspend after suspend was interrupted (v2)
@ 2010-02-23 18:45 ` Takahiro Yasui
0 siblings, 0 replies; 2+ messages in thread
From: Takahiro Yasui @ 2010-02-23 18:45 UTC (permalink / raw)
To: lvm-devel
Hi,
This is an update patch set to fix deadlock on suspending of mirror device.
Based on the Ueda-san's suggestion, I updated the patch set so that a target's
resume handler is used instead of introducing new handler (cancel_presuspend).
ISSUE
=====
Suspend procedure on a dm-mirror device could cause deadlock on recovery_count
semaphore.
When mirror_presuspend is called, recovery_count semaphore is acquired in
dm_rh_stop_recovery() to stop recovery routine, but when an signal is caught
in dm_wait_for_completion() or an error occurred in in dm_suspend(),
the suspend process is interrupted without releasing recovery_count semaphore
of a mirror device. This means that another suspend is executed, and then
the suspend process gets stuck at dm_rh_stop_recovery().
When suspend procedure is interrupted, the device should work properly since
the status of the device is not "suspended."
SOLUTION
========
Restore the target's state change by calling a target's specific resume handler
when its suspend procedure was interrupted after its presuspend handler completed.
PATCH SET
=========
1/4: dm: restore presuspend status
2/4: dm-log: update resume method for interruption of presuspend
3/4: dm-crypt: update resume method for interruption of presuspend
4/4: cmirror: update resume method for interruption of presuspend
NOTE: The cmirror patch (4/4) hasn't been tested yet.
I appreciate your comments.
Thanks,
Taka
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-02-23 18:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-23 18:45 [RFC][PATCH 0/4] dm-raid1: fix deadlock at suspend after suspend was interrupted (v2) Takahiro Yasui
2010-02-23 18:45 ` Takahiro Yasui
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.