linux/drivers/block/drbd
Lars Ellenberg 9a0d9d0389 drbd: fix schedule in atomic
An administrative detach used to request a state change directly to D_DISKLESS,
first suspending IO to avoid the last put_ldev() occuring from an endio handler,
potentially in irq context.

This is not enough on the receiving side (typically secondary), we may miss
some peer_req on the way to local disk, which then may do the last put_ldev()
from their drbd_peer_request_endio().

This patch makes the detach always go through the intermediate D_FAILED state.
We may consider to rename it D_DETACHING.

Alternative approach would be to create yet an other work item to be scheduled
on the worker, do the destructor work from there, and get the timing right.

manually picked commit 564040f from the drbd 8.4 branch.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
2011-05-24 10:14:32 +02:00
..
Kconfig drbd: Kconfig fix 2009-12-29 17:38:28 +01:00
Makefile drbd: remove tracing bits 2009-10-01 21:17:58 +02:00
drbd_actlog.c Fix common misspellings 2011-03-31 11:26:23 -03:00
drbd_bitmap.c drbd: fix up merge error 2011-03-28 07:42:58 -07:00
drbd_int.h drbd: fix schedule in atomic 2011-05-24 10:14:32 +02:00
drbd_main.c drbd: Take a more conservative approach when deciding max_bio_size 2011-05-24 10:08:58 +02:00
drbd_nl.c drbd: fix schedule in atomic 2011-05-24 10:14:32 +02:00
drbd_proc.c drbd: allow petabyte storage on 64bit arch 2011-03-10 11:43:24 +01:00
drbd_receiver.c drbd: Take a more conservative approach when deciding max_bio_size 2011-05-24 10:08:58 +02:00
drbd_req.c drbd: fix potential activity log refcount imbalance in error path 2011-05-24 10:06:44 +02:00
drbd_req.h drbd: Implemented real timeout checking for request processing time 2011-03-10 11:48:16 +01:00
drbd_strings.c drbd: Rename enum drbd_state_ret_codes to enum drbd_state_rv 2011-03-10 11:36:18 +01:00
drbd_vli.h Fix common misspellings 2011-03-31 11:26:23 -03:00
drbd_worker.c drbd: fix potential distributed deadlock 2011-05-24 10:02:41 +02:00
drbd_wrappers.h drbd: Get rid of unnecessary macros (2) 2011-03-10 11:36:15 +01:00