From: Greg Kroah-Hartman Date: Wed, 31 Jul 2024 06:07:53 +0000 (+0200) Subject: drop queue-6.1/block-mq-deadline-fix-the-tag-reservation-code.patch X-Git-Tag: v6.1.103~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=deea3281cc2cfe5ffad0fe2e5d16cecc70fb32bd;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-6.1/block-mq-deadline-fix-the-tag-reservation-code.patch --- diff --git a/queue-6.1/block-mq-deadline-fix-the-tag-reservation-code.patch b/queue-6.1/block-mq-deadline-fix-the-tag-reservation-code.patch deleted file mode 100644 index 5e713563ca2..00000000000 --- a/queue-6.1/block-mq-deadline-fix-the-tag-reservation-code.patch +++ /dev/null @@ -1,83 +0,0 @@ -From ca04ffe33d7623a4bb5530ed6fab0fe4099a9636 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 9 May 2024 10:01:49 -0700 -Subject: block/mq-deadline: Fix the tag reservation code - -From: Bart Van Assche - -[ Upstream commit 39823b47bbd40502632ffba90ebb34fff7c8b5e8 ] - -The current tag reservation code is based on a misunderstanding of the -meaning of data->shallow_depth. Fix the tag reservation code as follows: -* By default, do not reserve any tags for synchronous requests because - for certain use cases reserving tags reduces performance. See also - Harshit Mogalapalli, [bug-report] Performance regression with fio - sequential-write on a multipath setup, 2024-03-07 - (https://lore.kernel.org/linux-block/5ce2ae5d-61e2-4ede-ad55-551112602401@oracle.com/) -* Reduce min_shallow_depth to one because min_shallow_depth must be less - than or equal any shallow_depth value. -* Scale dd->async_depth from the range [1, nr_requests] to [1, - bits_per_sbitmap_word]. - -Cc: Christoph Hellwig -Cc: Damien Le Moal -Cc: Zhiguo Niu -Fixes: 07757588e507 ("block/mq-deadline: Reserve 25% of scheduler tags for synchronous requests") -Signed-off-by: Bart Van Assche -Reviewed-by: Christoph Hellwig -Link: https://lore.kernel.org/r/20240509170149.7639-3-bvanassche@acm.org -Signed-off-by: Jens Axboe -Signed-off-by: Sasha Levin ---- - block/mq-deadline.c | 20 +++++++++++++++++--- - 1 file changed, 17 insertions(+), 3 deletions(-) - -diff --git a/block/mq-deadline.c b/block/mq-deadline.c -index f10c2a0d18d41..ff029e1acc4d5 100644 ---- a/block/mq-deadline.c -+++ b/block/mq-deadline.c -@@ -597,6 +597,20 @@ static struct request *dd_dispatch_request(struct blk_mq_hw_ctx *hctx) - return rq; - } - -+/* -+ * 'depth' is a number in the range 1..INT_MAX representing a number of -+ * requests. Scale it with a factor (1 << bt->sb.shift) / q->nr_requests since -+ * 1..(1 << bt->sb.shift) is the range expected by sbitmap_get_shallow(). -+ * Values larger than q->nr_requests have the same effect as q->nr_requests. -+ */ -+static int dd_to_word_depth(struct blk_mq_hw_ctx *hctx, unsigned int qdepth) -+{ -+ struct sbitmap_queue *bt = &hctx->sched_tags->bitmap_tags; -+ const unsigned int nrr = hctx->queue->nr_requests; -+ -+ return ((qdepth << bt->sb.shift) + nrr - 1) / nrr; -+} -+ - /* - * Called by __blk_mq_alloc_request(). The shallow_depth value set by this - * function is used by __blk_mq_get_tag(). -@@ -613,7 +627,7 @@ static void dd_limit_depth(blk_opf_t opf, struct blk_mq_alloc_data *data) - * Throttle asynchronous requests and writes such that these requests - * do not block the allocation of synchronous requests. - */ -- data->shallow_depth = dd->async_depth; -+ data->shallow_depth = dd_to_word_depth(data->hctx, dd->async_depth); - } - - /* Called by blk_mq_update_nr_requests(). */ -@@ -623,9 +637,9 @@ static void dd_depth_updated(struct blk_mq_hw_ctx *hctx) - struct deadline_data *dd = q->elevator->elevator_data; - struct blk_mq_tags *tags = hctx->sched_tags; - -- dd->async_depth = max(1UL, 3 * q->nr_requests / 4); -+ dd->async_depth = q->nr_requests; - -- sbitmap_queue_min_shallow_depth(&tags->bitmap_tags, dd->async_depth); -+ sbitmap_queue_min_shallow_depth(&tags->bitmap_tags, 1); - } - - /* Called by blk_mq_init_hctx() and blk_mq_init_sched(). */ --- -2.43.0 -