From: Ed Tsai <ed.tsai@mediatek.com>
To: <axboe@kernel.dk>
Cc: <linux-block@vger.kernel.org>, <linux-scsi@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <martin.petersen@oracle.com>,
<bvanassche@acm.org>, <stanley.chu@mediatek.com>,
<peter.wang@mediatek.com>, <chun-hung.wu@mediatek.com>,
<alice.chao@mediatek.com>, <powen.kao@mediatek.com>,
<naomi.chu@mediatek.com>, <wsd_upstream@mediatek.com>,
Ed Tsai <ed.tsai@mediatek.com>
Subject: [PATCH 1/2] block: make the fair sharing of tag configurable
Date: Tue, 9 May 2023 14:52:29 +0800 [thread overview]
Message-ID: <20230509065230.32552-2-ed.tsai@mediatek.com> (raw)
In-Reply-To: <20230509065230.32552-1-ed.tsai@mediatek.com>
Add a new queue flag QUEUE_FLAG_FAIR_TAG_SHARING to make the fair tag
sharing configurable.
Signed-off-by: Ed Tsai <ed.tsai@mediatek.com>
---
block/blk-mq-debugfs.c | 1 +
block/blk-mq-tag.c | 1 +
block/blk-mq.c | 3 ++-
include/linux/blkdev.h | 6 +++++-
4 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
index d23a8554ec4a..f03b8bfe63be 100644
--- a/block/blk-mq-debugfs.c
+++ b/block/blk-mq-debugfs.c
@@ -103,6 +103,7 @@ static const char *const blk_queue_flag_name[] = {
QUEUE_FLAG_NAME(RQ_ALLOC_TIME),
QUEUE_FLAG_NAME(HCTX_ACTIVE),
QUEUE_FLAG_NAME(NOWAIT),
+ QUEUE_FLAG_NAME(FAIR_TAG_SHARING),
};
#undef QUEUE_FLAG_NAME
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index d6af9d431dc6..b8b36823f5f5 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -97,6 +97,7 @@ static int __blk_mq_get_tag(struct blk_mq_alloc_data *data,
struct sbitmap_queue *bt)
{
if (!data->q->elevator && !(data->flags & BLK_MQ_REQ_RESERVED) &&
+ blk_queue_fair_tag_sharing(data->q) &&
!hctx_may_queue(data->hctx, bt))
return BLK_MQ_NO_TAG;
diff --git a/block/blk-mq.c b/block/blk-mq.c
index f6dad0886a2f..f903107759f7 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1746,7 +1746,8 @@ static bool __blk_mq_alloc_driver_tag(struct request *rq)
bt = &rq->mq_hctx->tags->breserved_tags;
tag_offset = 0;
} else {
- if (!hctx_may_queue(rq->mq_hctx, bt))
+ if (blk_queue_fair_tag_sharing(rq->q) &&
+ !hctx_may_queue(rq->mq_hctx, bt))
return false;
}
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index b441e633f4dd..7fcb2356860d 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -561,10 +561,12 @@ struct request_queue {
#define QUEUE_FLAG_NOWAIT 29 /* device supports NOWAIT */
#define QUEUE_FLAG_SQ_SCHED 30 /* single queue style io dispatch */
#define QUEUE_FLAG_SKIP_TAGSET_QUIESCE 31 /* quiesce_tagset skip the queue*/
+#define QUEUE_FLAG_FAIR_TAG_SHARING 32 /* fair allocation of shared tags */
#define QUEUE_FLAG_MQ_DEFAULT ((1UL << QUEUE_FLAG_IO_STAT) | \
(1UL << QUEUE_FLAG_SAME_COMP) | \
- (1UL << QUEUE_FLAG_NOWAIT))
+ (1UL << QUEUE_FLAG_NOWAIT) | \
+ (1UL << QUEUE_FLAG_FAIR_TAG_SHARING))
void blk_queue_flag_set(unsigned int flag, struct request_queue *q);
void blk_queue_flag_clear(unsigned int flag, struct request_queue *q);
@@ -602,6 +604,8 @@ bool blk_queue_flag_test_and_set(unsigned int flag, struct request_queue *q);
#define blk_queue_sq_sched(q) test_bit(QUEUE_FLAG_SQ_SCHED, &(q)->queue_flags)
#define blk_queue_skip_tagset_quiesce(q) \
test_bit(QUEUE_FLAG_SKIP_TAGSET_QUIESCE, &(q)->queue_flags)
+#define blk_queue_fair_tag_sharing(q) \
+ test_bit(QUEUE_FLAG_FAIR_TAG_SHARING, &(q)->queue_flags)
extern void blk_set_pm_only(struct request_queue *q);
extern void blk_clear_pm_only(struct request_queue *q);
--
2.18.0
next prev parent reply other threads:[~2023-05-09 6:53 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-09 6:52 [PATCH 0/2] block: improve the share tag set performance Ed Tsai
2023-05-09 6:52 ` Ed Tsai [this message]
2023-05-09 21:33 ` [PATCH 1/2] block: make the fair sharing of tag configurable kernel test robot
2023-05-11 15:33 ` Christoph Hellwig
2023-05-22 5:30 ` kernel test robot
2023-05-09 6:52 ` [PATCH 2/2] ufs: don't use the fair tag sharings Ed Tsai
2023-05-09 8:03 ` Avri Altman
2023-05-09 14:04 ` Bart Van Assche
2023-05-09 16:19 ` Avri Altman
2023-05-09 16:30 ` Bart Van Assche
2023-05-10 5:21 ` Avri Altman
2023-05-10 15:56 ` Bart Van Assche
2023-05-11 15:34 ` Christoph Hellwig
2023-05-11 15:38 ` Bart Van Assche
2023-05-12 14:02 ` Christoph Hellwig
2023-05-12 18:12 ` Bart Van Assche
2023-05-13 3:09 ` Yu Kuai
2023-05-16 15:12 ` Bart Van Assche
2023-05-17 7:49 ` Yu Kuai
2023-05-17 18:23 ` Bart Van Assche
2023-05-18 1:49 ` Yu Kuai
2023-05-18 2:23 ` Bart Van Assche
2023-05-18 7:55 ` Yu Kuai
2023-06-13 14:07 ` Bart Van Assche
2023-06-14 1:58 ` Yu Kuai
2023-05-10 22:56 ` [PATCH 0/2] block: improve the share tag set performance Bart Van Assche
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=20230509065230.32552-2-ed.tsai@mediatek.com \
--to=ed.tsai@mediatek.com \
--cc=alice.chao@mediatek.com \
--cc=axboe@kernel.dk \
--cc=bvanassche@acm.org \
--cc=chun-hung.wu@mediatek.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=naomi.chu@mediatek.com \
--cc=peter.wang@mediatek.com \
--cc=powen.kao@mediatek.com \
--cc=stanley.chu@mediatek.com \
--cc=wsd_upstream@mediatek.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®