All of lore.kernel.org
 help / color / mirror / Atom feed
From: Keith Busch <keith.busch@intel.com>
To: linux-scsi@vger.kernel.org, linux-block@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>,
	Martin Petersen <martin.petersen@oracle.com>,
	Bart Van Assche <bvanassche@acm.org>,
	Keith Busch <keith.busch@intel.com>
Subject: [PATCHv3 3/3] blk-mq: Simplify request completion state
Date: Thu, 15 Nov 2018 10:58:20 -0700	[thread overview]
Message-ID: <20181115175820.13391-4-keith.busch@intel.com> (raw)
In-Reply-To: <20181115175820.13391-1-keith.busch@intel.com>

There are no more users relying on blk-mq request states to prevent
double completions, so replace the relatively expensive cmpxchg operation
with WRITE_ONCE.

Signed-off-by: Keith Busch <keith.busch@intel.com>
---
 block/blk-mq.c         |  4 +---
 include/linux/blk-mq.h | 14 --------------
 2 files changed, 1 insertion(+), 17 deletions(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 1fb0f2050d31..ce769132cfbe 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -568,9 +568,7 @@ static void __blk_mq_complete_request(struct request *rq)
 	bool shared = false;
 	int cpu;
 
-	if (!blk_mq_mark_complete(rq))
-		return;
-
+	WRITE_ONCE(rq->state, MQ_RQ_COMPLETE);
 	/*
 	 * Most of single queue controllers, there is only one irq vector
 	 * for handling IO completion, and the only irq's affinity is set
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index f0dc26fc86a9..9b5528fcdd45 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -329,20 +329,6 @@ void blk_mq_quiesce_queue_nowait(struct request_queue *q);
 
 unsigned int blk_mq_rq_cpu(struct request *rq);
 
-/**
- * blk_mq_mark_complete() - Set request state to complete
- * @rq: request to set to complete state
- *
- * Returns true if request state was successfully set to complete. If
- * successful, the caller is responsibile for seeing this request is ended, as
- * blk_mq_complete_request will not work again.
- */
-static inline bool blk_mq_mark_complete(struct request *rq)
-{
-	return cmpxchg(&rq->state, MQ_RQ_IN_FLIGHT, MQ_RQ_COMPLETE) ==
-			MQ_RQ_IN_FLIGHT;
-}
-
 /*
  * Driver command data is immediately after the request. So subtract request
  * size to get back to the original request, add request size to get the PDU.
-- 
2.14.4


  parent reply	other threads:[~2018-11-15 18:02 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-15 17:58 [PATCHv3 0/3] scsi timeout handling updates Keith Busch
2018-11-15 17:58 ` [PATCHv3 1/3] blk-mq: Return true if request was completed Keith Busch
2018-11-19  8:31   ` Christoph Hellwig
2018-11-15 17:58 ` [PATCHv3 2/3] scsi: Do not rely on blk-mq for double completions Keith Busch
2018-11-16  9:53   ` Hannes Reinecke
2018-11-16 14:46     ` Bart Van Assche
2018-11-19  8:58   ` Christoph Hellwig
2018-11-19 15:17     ` Jens Axboe
2018-11-19 15:19     ` Keith Busch
2018-11-21 13:12       ` Christoph Hellwig
2018-11-26 15:32         ` Jens Axboe
2018-11-26 15:31           ` Keith Busch
2018-11-15 17:58 ` Keith Busch [this message]
2018-11-19  8:58   ` [PATCHv3 3/3] blk-mq: Simplify request completion state Christoph Hellwig
2018-11-15 19:53 ` [PATCHv3 0/3] scsi timeout handling updates Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181115175820.13391-4-keith.busch@intel.com \
    --to=keith.busch@intel.com \
    --cc=axboe@kernel.dk \
    --cc=bvanassche@acm.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.