From: Christoph Hellwig <hch@lst.de>
To: Bart Van Assche <bvanassche@acm.org>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Ming Lei <ming.lei@redhat.com>,
"James E.J. Bottomley" <jejb@linux.ibm.com>
Subject: Re: [PATCH v2 3/3] block: Improve performance for BLK_MQ_F_BLOCKING drivers
Date: Thu, 20 Jul 2023 07:54:37 +0200 [thread overview]
Message-ID: <20230720055437.GA2665@lst.de> (raw)
In-Reply-To: <20230719182243.2810134-4-bvanassche@acm.org>
On Wed, Jul 19, 2023 at 11:22:42AM -0700, Bart Van Assche wrote:
> blk_mq_run_queue() runs the queue asynchronously if BLK_MQ_F_BLOCKING
> has been set.
Maybe something like:
blk_mq_run_queue() always runs the queue asynchronously if
BLK_MQ_F_BLOCKING is set on the tag_set.
> + * for execution. Don't wait for completion. May sleep if BLK_MQ_F_BLOCKING
> + * has been set.
> *
> * Note:
> * This function will invoke @done directly if the queue is dead.
> @@ -2213,6 +2214,8 @@ void blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)
> */
> WARN_ON_ONCE(!async && in_interrupt());
>
> + might_sleep_if(!async && hctx->flags & BLK_MQ_F_BLOCKING);
This is some odd an very complex calling conventions. I suspect most
!BLK_MQ_F_BLOCKING could also deal with the may sleep if not async,
and that would give us a much easier to audit change as we could
remove the WARN_ON_ONCE above and just do a:
might_sleep_if(!async);
In fact this might be a good time to split up blk_mq_run_hw_queue
into blk_mq_run_hw_queue and blk_mq_run_hw_queue_async and do
away with the bool and have cristal clear calling conventions.
If we really need !async calles than can sleep we can add a specific
blk_mq_run_hw_queue_atomic.
next prev parent reply other threads:[~2023-07-20 5:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-19 18:22 [PATCH v2 0/3] Improve performance for BLK_MQ_F_BLOCKING drivers Bart Van Assche
2023-07-19 18:22 ` [PATCH v2 1/3] scsi: Inline scsi_kick_queue() Bart Van Assche
2023-07-20 5:39 ` Christoph Hellwig
2023-07-19 18:22 ` [PATCH v2 2/3] scsi: Remove a blk_mq_run_hw_queues() call Bart Van Assche
2023-07-20 5:40 ` Christoph Hellwig
2023-07-19 18:22 ` [PATCH v2 3/3] block: Improve performance for BLK_MQ_F_BLOCKING drivers Bart Van Assche
2023-07-20 5:54 ` Christoph Hellwig [this message]
2023-07-20 15:44 ` Bart Van Assche
2023-07-21 6:31 ` Christoph Hellwig
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=20230720055437.GA2665@lst.de \
--to=hch@lst.de \
--cc=axboe@kernel.dk \
--cc=bvanassche@acm.org \
--cc=jejb@linux.ibm.com \
--cc=linux-block@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=ming.lei@redhat.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.