]> git.itanic.dy.fi Git - linux-stable/commit
block: blk_queue_enter() / __bio_queue_enter() must return -EAGAIN for nowait
authorStefan Roesch <shr@fb.com>
Mon, 12 Sep 2022 16:53:25 +0000 (09:53 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Sep 2022 12:15:48 +0000 (14:15 +0200)
commit5f285e4c47c3cd4f6a0eb0c6f33a1b1e979d3628
treea5456a3f325b03218300e51a63450ff4161f86ae
parentf86092d12fbbaa928a821faa4286485521251a66
block: blk_queue_enter() / __bio_queue_enter() must return -EAGAIN for nowait

[ Upstream commit 56f99b8d06ef1ed1c9730948f9f05ac2b930a20b ]

Today blk_queue_enter() and __bio_queue_enter() return -EBUSY for the
nowait code path. This is not correct: they should return -EAGAIN
instead.

This problem was detected by fio. The following command exposed the
above problem:

t/io_uring -p0 -d128 -b4096 -s32 -c32 -F1 -B0 -R0 -X1 -n24 -P1 -u1 -O0 /dev/ng0n1

By applying the patch, the retry case is handled correctly in the slow
path.

Signed-off-by: Stefan Roesch <shr@fb.com>
Fixes: bfd343aa1718 ("blk-mq: don't wait in blk_mq_queue_enter() if __GFP_WAIT isn't set")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
block/blk-core.c