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. 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(-) -- 2.33.0