diff mbox series

block: avoid clearing blk_mq_alloc_data unnecessarily

Message ID 1ba89cb7-e53c-78c3-1fe4-db9908851e63@kernel.dk (mailing list archive)
State New, archived
Headers show
Series block: avoid clearing blk_mq_alloc_data unnecessarily | expand

Commit Message

Jens Axboe Dec. 3, 2021, 3:48 p.m. UTC
We already set almost all of what we need here, just the non-plug
path needs to set nr_tags and clear cached.

Signed-off-by: Jens Axboe <axboe@kernel.dk>

---

Comments

Christoph Hellwig Dec. 6, 2021, 6:59 a.m. UTC | #1
On Fri, Dec 03, 2021 at 08:48:09AM -0700, Jens Axboe wrote:
> We already set almost all of what we need here, just the non-plug
> path needs to set nr_tags and clear cached.

How does this avoid clearing?  All partial initializers zero the rest of
the structure.
Jens Axboe Dec. 6, 2021, 4:34 p.m. UTC | #2
On 12/5/21 11:59 PM, Christoph Hellwig wrote:
> On Fri, Dec 03, 2021 at 08:48:09AM -0700, Jens Axboe wrote:
>> We already set almost all of what we need here, just the non-plug
>> path needs to set nr_tags and clear cached.
> 
> How does this avoid clearing?  All partial initializers zero the rest of
> the structure.

Yep this is garbage, I'll just drop it.
diff mbox series

Patch

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 4dc0837f874d..eba34af1c5eb 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2664,7 +2664,7 @@  static struct request *blk_mq_get_new_requests(struct request_queue *q,
 {
 	struct blk_mq_alloc_data data = {
 		.q		= q,
-		.nr_tags	= 1,
+		.shallow_depth	= 0
 	};
 	struct request *rq;
 
@@ -2683,6 +2683,9 @@  static struct request *blk_mq_get_new_requests(struct request_queue *q,
 		data.nr_tags = plug->nr_ios;
 		plug->nr_ios = 1;
 		data.cached_rq = &plug->cached_rq;
+	} else {
+		data.nr_tags = 1;
+		data.cached_rq = NULL;
 	}
 
 	rq = __blk_mq_alloc_requests(&data);