From: Jianchao Wang <jianchao.w.wang@oracle.com> To: axboe@kernel.dk Cc: ming.lei@redhat.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH V6 2/5] blk-mq: fix issue directly case when q is stopped or quiesced Date: Tue, 13 Nov 2018 17:56:53 +0800 [thread overview] Message-ID: <1542103016-21037-3-git-send-email-jianchao.w.wang@oracle.com> (raw) In-Reply-To: <1542103016-21037-1-git-send-email-jianchao.w.wang@oracle.com> When try to issue request directly, if the queue is stopped or quiesced, 'bypass' will be ignored and return BLK_STS_OK to caller to avoid it dispatch request again. Then the request will be inserted with blk_mq_sched_insert_request. This is not correct for dm-rq case where we should avoid to pass through the underlying path's io scheduler. To fix it, use blk_mq_request_bypass_insert to insert the request to hctx->dispatch when we cannot pass through io scheduler but have to insert. Signed-off-by: Jianchao Wang <jianchao.w.wang@oracle.com> --- block/blk-mq.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/block/blk-mq.c b/block/blk-mq.c index 14b4d06..11c52bb 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -1772,7 +1772,7 @@ static blk_status_t blk_mq_try_issue_directly(struct blk_mq_hw_ctx *hctx, bool bypass) { struct request_queue *q = rq->q; - bool run_queue = true; + bool run_queue = true, force = false; blk_status_t ret = BLK_STS_RESOURCE; int srcu_idx; @@ -1786,7 +1786,7 @@ static blk_status_t blk_mq_try_issue_directly(struct blk_mq_hw_ctx *hctx, */ if (unlikely(blk_mq_hctx_stopped(hctx) || blk_queue_quiesced(q))) { run_queue = false; - bypass = false; + force = true; goto out_unlock; } @@ -1817,6 +1817,9 @@ static blk_status_t blk_mq_try_issue_directly(struct blk_mq_hw_ctx *hctx, if (!bypass) { blk_mq_sched_insert_request(rq, false, run_queue, false); ret = BLK_STS_OK; + } else if (force) { + blk_mq_request_bypass_insert(rq, run_queue); + ret = BLK_STS_OK; } break; default: -- 2.7.4
next prev parent reply other threads:[~2018-11-13 9:57 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-11-13 9:56 [PATCH V6 0/5] blk-mq: refactor and fix on issue request directly Jianchao Wang 2018-11-13 9:56 ` [PATCH V6 1/5] blk-mq: refactor the code of " Jianchao Wang 2018-11-13 9:56 ` Jianchao Wang [this message] 2018-11-13 9:56 ` [PATCH V6 3/5] blk-mq: ensure hctx to be ran on mapped cpu when issue directly Jianchao Wang 2018-11-13 13:44 ` Jens Axboe 2018-11-14 2:15 ` jianchao.wang 2018-11-14 3:02 ` Ming Lei 2018-11-14 3:38 ` jianchao.wang 2018-11-13 9:56 ` [PATCH V6 4/5] blk-mq: issue directly with bypass 'false' in blk_mq_sched_insert_requests Jianchao Wang 2018-11-13 9:56 ` [PATCH V6 5/5] blk-mq: replace and kill blk_mq_request_issue_directly Jianchao Wang
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=1542103016-21037-3-git-send-email-jianchao.w.wang@oracle.com \ --to=jianchao.w.wang@oracle.com \ --cc=axboe@kernel.dk \ --cc=linux-block@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=ming.lei@redhat.com \ --subject='Re: [PATCH V6 2/5] blk-mq: fix issue directly case when q is stopped or quiesced' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).