On 10/18/21 11:29, Hao Xu wrote:
1/2 is a prep patch. 2/2 is the main one. The good thing: see commit message. the side effect: for normal io-worker path, added two if and two local variables. for FORCE_ASYNC path, added three if and several dereferences I think it is fine since the io-worker path is not the fast path, and the benefit of this patchset is worth it.
We don't care about overhead in iowq, but would be better to get rid of the in_worker in io_read(). See comments to 1/2. Btw, you told that it performs better comparing to normal IOSQE_ASYNC. I'm confused, didn't we agree that it can be merged into IOSQE_ASYNC without extra flags?
Btw, we need to tweak the io-cancel.c a bit, not a big problem. liburing tests will come later. v1-->v2: - split logic of force_nonblock - tweak added code in io_wq_submit_work to reduce overhead from Pavel's commments. Hao Xu (2): io_uring: split logic of force_nonblock io_uring: implement async hybrid mode for pollable requests fs/io_uring.c | 85 ++++++++++++++++++++++++++--------- include/uapi/linux/io_uring.h | 4 +- 2 files changed, 66 insertions(+), 23 deletions(-)
-- Pavel Begunkov