io_uring: don't forget to adjust io_size
authorPavel Begunkov <asml.silence@gmail.com>
Thu, 4 Feb 2021 13:52:02 +0000 (13:52 +0000)
committerJens Axboe <axboe@kernel.dk>
Thu, 4 Feb 2021 15:05:46 +0000 (08:05 -0700)
commit7335e3bf9d0a92be09bb4f38d06ab22c40f0fead
treea0f8ea4b3110ad63f38aed94f8560ed7644ebf28
parent6bf985dc50dd882a95fffa9c7eef0d1416f512e6
io_uring: don't forget to adjust io_size

We have invariant in io_read() of how much we're trying to read spilled
into an iter and io_size variable. The last one controls decision making
about whether to do read-retries. However, io_size is modified only
after the first read attempt, so if we happen to go for a third retry in
a single call to io_read(), we will get io_size greater than in the
iterator, so may lead to various side effects up to live-locking.

Modify io_size each time.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c