This patch set addresses problems hit when running liburing 500f9fbadef8-test. - Patch 1 is a suggested fix to overloading of kiocb.private since it can be written by iomap_dio_rw(). io_import_iovec() can fail a submission as follows: /* buffer index only valid with fixed read/write, or buffer select */ if (req->rw.kiocb.private && !(req->flags & REQ_F_BUFFER_SELECT)) return -EINVAL; so a read request fails with -EINVAL upon retry if iomap_dio_rw() has written to iocb->private: WRITE_ONCE(iocb->private, dio->submit.last_queue); The suggested fix is use a separate variable to store buf_index. - Patch 2 reverts c58c1f8343 which had changed the error for REQ_NOWAIT requests to non-mq queue from -ENOTSUP to -EAGAIN. /* * Non-mq queues do not honor REQ_NOWAIT, so complete a bio * with BLK_STS_AGAIN status in order to catch -EAGAIN and * to give a chance to the caller to repeat request gracefully. */ if ((bio->bi_opf & REQ_NOWAIT) && !queue_is_mq(q)) { status = BLK_STS_AGAIN; goto end_io; } I'm not clear what the original reasoning was but io_wq_submit_work() will call io_issue_sqe() continuously as long as -EAGAIN is returned. I'm not sure if this could break something else. I ran fio as specified in c58c1f8343 with this change and don't see any errors. Bijan Mottahedeh (2): io_uring: don't use kiocb.private to store buf_index io_uring: mark REQ_NOWAIT for a non-mq queue as unspported block/blk-core.c | 10 +++------- fs/io_uring.c | 15 +++++++-------- 2 files changed, 10 insertions(+), 15 deletions(-) -- 1.8.3.1