linux/drivers/block/drbd
Lars Ellenberg 9a278a7906 drbd: allow read requests to be retried after force-detach
Sometimes, a lower level block device turns into a tar-pit,
not completing requests at all, not even doing error completion.

We can force-detach from such a tar-pit block device,
either by disk-timeout, or by drbdadm detach --force.

Queueing for retry only from the request destruction path (kref hit 0)
makes it impossible to retry affected read requests from the peer,
until the local IO completion happened, as the locally submitted
bio holds a reference on the drbd request object.

If we can only complete READs when the local completion finally
happens, we would not need to force-detach in the first place.

Instead, queue for retry where we otherwise had done the error completion.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
2012-11-08 16:58:37 +01:00
..
drbd_actlog.c drbd: move the drbd_work_queue from drbd_socket to drbd_connection 2012-11-08 16:58:34 +01:00
drbd_bitmap.c drbd: fix access of unallocated pages and kernel panic 2012-11-08 16:58:32 +01:00
drbd_int.h drbd: base completion and destruction of requests on ref counts 2012-11-08 16:58:36 +01:00
drbd_interval.c drbd: Iterate over all overlapping intervals in a tree 2011-10-14 16:47:37 +02:00
drbd_interval.h drbd: Iterate over all overlapping intervals in a tree 2011-10-14 16:47:37 +02:00
drbd_main.c drbd: allow read requests to be retried after force-detach 2012-11-08 16:58:37 +01:00
drbd_nl.c drbd: remove struct drbd_tl_epoch objects (barrier works) 2012-11-08 16:58:35 +01:00
drbd_nla.c drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00
drbd_nla.h drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00
drbd_proc.c drbd: Move list of epochs from mdev to tconn 2012-11-08 16:58:08 +01:00
drbd_receiver.c drbd: remove struct drbd_tl_epoch objects (barrier works) 2012-11-08 16:58:35 +01:00
drbd_req.c drbd: allow read requests to be retried after force-detach 2012-11-08 16:58:37 +01:00
drbd_req.h drbd: allow read requests to be retried after force-detach 2012-11-08 16:58:37 +01:00
drbd_state.c drbd: move the drbd_work_queue from drbd_socket to drbd_connection 2012-11-08 16:58:34 +01:00
drbd_state.h drbd: Improved logging of state changes 2012-11-08 16:45:06 +01:00
drbd_strings.c drbd: Allow volumes to become primary only on one side 2012-11-04 00:16:31 +01:00
drbd_vli.h Fix common misspellings 2011-03-31 11:26:23 -03:00
drbd_worker.c drbd: remove struct drbd_tl_epoch objects (barrier works) 2012-11-08 16:58:35 +01:00
drbd_wrappers.h drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00
Kconfig drbd: Kconfig fix 2009-12-29 17:38:28 +01:00
Makefile drbd: Split off netlink mandatory attribute handling into separate file 2012-11-08 16:57:45 +01:00