Hi, This is a patch set to fix deadlock on suspending of mirror device. 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 ======== Introduce a target handler, cancel_presuspend, to cancel status changes done by a target specific presuspend handler. PATCH SET ========= 1/3: dm: introduce cancel_presuspend framework 2/3: dm-raid1: add cancel_presuspend function 3/3: dm-delay: add cancel_presuspend function I appreciate your comments. Thanks, -- Takahiro Yasui Hitachi Computer Products (America), Inc. -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel