On 9/11/21 2:51 PM, Pavel Begunkov wrote: > It's expensive enough to post an CQE, and there are other > reasons to want to ignore them, e.g. for link handling and > it may just be more convenient for the userspace. FWIW, tried with some benchmark doing QD1 buffered reads, reads taking 60+% (memcpy/etc.) of the time and 20-25% for io_uring. Got +6-7% to performance from the kernel side only with additional room to make the userspace faster. > Try to cover most of the use cases with one flag. The overhead > is one "if (cqe->flags & IOSQE_CQE_SKIP_SUCCESS)" check per > requests and a bit bloated req_set_fail(), should be bearable. > > See 2/3 for the actual description of the flag. > > Pavel Begunkov (3): > io_uring: clean cqe filling functions > io_uring: add option to skip CQE posting > io_uring: don't spinlock when not posting CQEs > > fs/io_uring.c | 103 ++++++++++++++++++++++------------ > include/uapi/linux/io_uring.h | 3 + > 2 files changed, 70 insertions(+), 36 deletions(-) > -- Pavel Begunkov