diff options
author | Lars Ellenberg <lars.ellenberg@linbit.com> | 2010-05-27 09:45:45 +0200 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-06-01 11:12:27 +0200 |
commit | d255e5ff5fc6cc6c60dd014d1261448a7bbc8134 (patch) | |
tree | af933be5ddb81b1e47be2f91ff558c5c792f2f0f /drivers/block/drbd/drbd_req.h | |
parent | 32fa7e91f923d8b2578c42016ff3a94efc9968a2 (diff) | |
download | op-kernel-dev-d255e5ff5fc6cc6c60dd014d1261448a7bbc8134.zip op-kernel-dev-d255e5ff5fc6cc6c60dd014d1261448a7bbc8134.tar.gz |
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>
Diffstat (limited to 'drivers/block/drbd/drbd_req.h')
-rw-r--r-- | drivers/block/drbd/drbd_req.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_req.h b/drivers/block/drbd/drbd_req.h index 16119d7..02d575d 100644 --- a/drivers/block/drbd/drbd_req.h +++ b/drivers/block/drbd/drbd_req.h @@ -91,6 +91,7 @@ enum drbd_req_event { send_failed, handed_over_to_network, connection_lost_while_pending, + read_retry_remote_canceled, recv_acked_by_peer, write_acked_by_peer, write_acked_by_peer_and_sis, /* and set_in_sync */ |