io_uring: disable drain with cqe skip
authorPavel Begunkov <asml.silence@gmail.com>
Wed, 10 Nov 2021 15:49:34 +0000 (15:49 +0000)
committerJens Axboe <axboe@kernel.dk>
Wed, 24 Nov 2021 18:17:53 +0000 (11:17 -0700)
commit5562a8d71aa32ea27133d8b10406b3dcd57c01a5
treedd085f93d5177bcdf3119b7213d85a76f1f17fd1
parent3d4aeb9f98058c3bdfef5286e240cf18c50fee89
io_uring: disable drain with cqe skip

Current IOSQE_IO_DRAIN implementation doesn't work well with CQE
skipping and it's not allowed, otherwise some requests might be not
executed until the ring is destroyed and the userspace would hang.

Let's fail all drain requests after seeing IOSQE_CQE_SKIP_SUCCESS at
least once. All drained requests prior to that will get run normally,
so there should be no stalls. However, even though such mixing wouldn't
lead to issues at the moment, it's still not allowed as the behaviour
may change.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/bcf7164f8bf3eb54b7bb7b4fd119907fa4d4d43b.1636559119.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c