From 7f92f792e601de411793f199dc87c5aa4a37413b Mon Sep 17 00:00:00 2001 From: Lars Ellenberg Date: Mon, 26 Mar 2012 16:44:59 +0200 Subject: [PATCH] --- yaml --- r: 346177 b: refs/heads/master c: 27a434fe4006efa597a392d3575e3a5e9017994f h: refs/heads/master i: 346175: d2abf8c7c50e561ffaa9b1e762c4a2e2b6177f6e v: v3 --- [refs] | 2 +- trunk/drivers/block/drbd/drbd_req.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index c9dd80c5da84..13e11b8738e1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2312f0b3c5ab794fbac9e9bebe90c784c9d449c5 +refs/heads/master: 27a434fe4006efa597a392d3575e3a5e9017994f diff --git a/trunk/drivers/block/drbd/drbd_req.c b/trunk/drivers/block/drbd/drbd_req.c index 5f4436c3abb3..d6198b50ea7c 100644 --- a/trunk/drivers/block/drbd/drbd_req.c +++ b/trunk/drivers/block/drbd/drbd_req.c @@ -523,10 +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 OOS_HANDED_TO_NETWORK: - /* actually the same */ case SEND_CANCELED: - /* treat it the same */ case SEND_FAILED: /* real cleanup will be done from tl_clear. just update flags * so it is no longer marked as on the worker queue */ @@ -556,11 +553,14 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what, } req->rq_state &= ~RQ_NET_QUEUED; req->rq_state |= RQ_NET_SENT; - /* because _drbd_send_zc_bio could sleep, and may want to - * dereference the bio even after the "WRITE_ACKED_BY_PEER" and - * "COMPLETED_OK" events came in, once we return from - * _drbd_send_zc_bio (drbd_send_dblock), we have to check - * whether it is done already, and end it. */ + _req_may_be_done_not_susp(req, m); + break; + + case OOS_HANDED_TO_NETWORK: + /* Was not set PENDING, no longer QUEUED, so is now DONE + * as far as this connection is concerned. */ + req->rq_state &= ~RQ_NET_QUEUED; + req->rq_state |= RQ_NET_DONE; _req_may_be_done_not_susp(req, m); break;