io_uring: catch -EIO from buffered issue request failure
authorJens Axboe <axboe@kernel.dk>
Mon, 1 Jun 2020 16:00:27 +0000 (10:00 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 17 Jun 2020 21:06:39 +0000 (15:06 -0600)
commit6c8b94477e9812797905c17ea418c04a42cb16c9
tree816c70077500fac1250b3957682b3f222d7e74c4
parente5ecb7791833e331eae3d4ac106e71b1a4287170
io_uring: catch -EIO from buffered issue request failure

-EIO bubbles up like -EAGAIN if we fail to allocate a request at the
lower level. Play it safe and treat it like -EAGAIN in terms of sync
retry, to avoid passing back an errant -EIO.

Catch some of these early for block based file, as non-mq devices
generally do not support NOWAIT. That saves us some overhead by
not first trying, then retrying from async context. We can go straight
to async punt instead.

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