drbd: fix hang on local read errors while disconnected
authorLars Ellenberg <lars.ellenberg@linbit.com>
Thu, 27 May 2010 07:45:45 +0000 (09:45 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Tue, 1 Jun 2010 09:12:27 +0000 (11:12 +0200)
commitd255e5ff5fc6cc6c60dd014d1261448a7bbc8134
treeaf933be5ddb81b1e47be2f91ff558c5c792f2f0f
parent32fa7e91f923d8b2578c42016ff3a94efc9968a2
drbd: fix hang on local read errors while disconnected

"canceled" w_read_retry_remote never completed, if they have been
canceled after drbd_disconnect connection teardown cleanup has already
run (or we are currently not connected anyways).

Fixed by not queueing a remote retry if we already know it won't work
(pdsk not uptodate), and cleanup ourselves on "cancel", in case we hit a
race with drbd_disconnect.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
drivers/block/drbd/drbd_req.c
drivers/block/drbd/drbd_req.h
drivers/block/drbd/drbd_worker.c