diff options
author | Chengming Zhou <[email protected]> | 2023-11-20 03:25:21 +0000 |
---|---|---|
committer | Jens Axboe <[email protected]> | 2023-11-20 10:26:26 -0700 |
commit | 53f2bca2609237f910531f2c1a7779b16ce7952d (patch) | |
tree | 6a9108d20cdb839ecbc8fa184ebc3b788cd59eb9 /scripts/generate_rust_analyzer.py | |
parent | c96b8175522a2c52e297ee0a49827a668f95e1e8 (diff) |
block/null_blk: Fix double blk_mq_start_request() warning
When CONFIG_BLK_DEV_NULL_BLK_FAULT_INJECTION is enabled, null_queue_rq()
would return BLK_STS_RESOURCE or BLK_STS_DEV_RESOURCE for the request,
which has been marked as MQ_RQ_IN_FLIGHT by blk_mq_start_request().
Then null_queue_rqs() put these requests in the rqlist, return back to
the block layer core, which would try to queue them individually again,
so the warning in blk_mq_start_request() triggered.
Fix it by splitting the null_queue_rq() into two parts: the first is the
preparation of request, the second is the handling of request. We put
the blk_mq_start_request() after the preparation part, which may fail
and return back to the block layer core.
The throttling also belongs to the preparation part, so move it before
blk_mq_start_request(). And change the return type of null_handle_cmd()
to void, since it always return BLK_STS_OK now.
Reported-by: <[email protected]>
Closes: https://lore.kernel.org/all/[email protected]/
Fixes: d78bfa1346ab ("block/null_blk: add queue_rqs() support")
Suggested-by: Bart Van Assche <[email protected]>
Signed-off-by: Chengming Zhou <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
Diffstat (limited to 'scripts/generate_rust_analyzer.py')
0 files changed, 0 insertions, 0 deletions