diff options
| author | Keith Busch <kbusch@kernel.org> | 2026-09-22 10:27:10 -0700 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2026-09-23 05:26:17 -0600 |
| commit | ab6c756f28c741d704a7c3e04814bfc3adf6f818 (patch) | |
| tree | 91d4c4a04dff31d53080db954d0738a720063717 /tools/lib/python | |
| parent | 2a42e6fe1293f2e2d579c9fe5bbab056dd8b880e (diff) | |
| download | linux-next-ab6c756f28c741d704a7c3e04814bfc3adf6f818.tar.gz linux-next-ab6c756f28c741d704a7c3e04814bfc3adf6f818.zip | |
blk-mq: set RQF_USE_SCHED when the operation is known
The cached requests are allocated for one operation but can be handed
out for another. A passthrough command has RQF_USE_SCHED cleared, so
using those flags for a subsequent read/write bio will insert it into
the scheduler without ->prepare_request() and frees it without
->finish_request(). For kyber, this leaks the domain token acquired at
dispatch and stalls the queue.
Don't set RQF_USE_SCHED based on the first operation the batch happened
to be allocated for. Instead, set it after the request is claimed by an
operation. Introduce a helper function, blk_mq_rq_late_init() for this,
and absorb blk_mq_rq_time_init() since the two run together.
Fixes: 4b6a5d9cea91 ("block: enable batched allocation for blk_mq_alloc_request()")
Link: https://lore.kernel.org/linux-block/20260916151655.2588-1-15815827059@163.com/
Reported-by: Henry Hu <huhai@kylinos.cn>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://patch.msgid.link/20260922172711.1573186-1-kbusch@meta.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'tools/lib/python')
0 files changed, 0 insertions, 0 deletions
