]> git.baikalelectronics.ru Git - kernel.git/commit
io_uring: internally retry short reads
authorJens Axboe <axboe@kernel.dk>
Thu, 13 Aug 2020 17:51:40 +0000 (11:51 -0600)
committerJens Axboe <axboe@kernel.dk>
Thu, 13 Aug 2020 23:00:31 +0000 (16:00 -0700)
commit1fa9de55d2c255aabf6c9c4c9582565392cd04e5
tree9992d6439bed79798c41ae49fc8566dfe58c43a5
parent2f0408fc0be99f60e62160f83dc30d2434b49f94
io_uring: internally retry short reads

We've had a few application cases of not handling short reads properly,
and it is understandable as short reads aren't really expected if the
application isn't doing non-blocking IO.

Now that we retain the iov_iter over retries, we can implement internal
retry pretty trivially. This ensures that we don't return a short read,
even for buffered reads on page cache conflicts.

Cleanup the deep nesting and hard to read nature of io_read() as well,
it's much more straight forward now to read and understand. Added a
few comments explaining the logic as well.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c