drbd: fix READ_RETRY_REMOTE_CANCELED to not complete if device is suspended
authorLars Ellenberg <lars.ellenberg@linbit.com>
Mon, 26 Mar 2012 14:46:39 +0000 (16:46 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 8 Nov 2012 15:58:22 +0000 (16:58 +0100)
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_req.c

index d6198b50ea7c249d93238e79bd6dc6902a6eb85b..771f29c804381c9a066542f1620f39333008b2e1 100644 (file)
@@ -523,6 +523,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
                drbd_queue_work(&mdev->tconn->data.work, &req->w);
                break;
 
+       case READ_RETRY_REMOTE_CANCELED:
        case SEND_CANCELED:
        case SEND_FAILED:
                /* real cleanup will be done from tl_clear.  just update flags
@@ -564,9 +565,6 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
                _req_may_be_done_not_susp(req, m);
                break;
 
-       case READ_RETRY_REMOTE_CANCELED:
-               req->rq_state &= ~RQ_NET_QUEUED;
-               /* fall through, in case we raced with drbd_disconnect */
        case CONNECTION_LOST_WHILE_PENDING:
                /* transfer log cleanup after connection loss */
                /* assert something? */