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>
Mon, 22 Jun 2020 02:44:25 +0000 (20:44 -0600)
commit4503b7676a2e0abe69c2f2c0d8b03aec53f2f048
tree1d2e009bdf3fc22219108545dd5c0e8022bf19db
parentac8691c415e0ce0b8734cb6d9df2df18608eebed
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