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 |
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.
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 --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);
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> ---