To implement io_uring_wait_cqe_timeout, we introduce a magic number called `LIBURING_UDATA_TIMEOUT`. The problem is that not only we must make sure that users should never set sqe->user_data to LIBURING_UDATA_TIMEOUT, but also introduce extra complexity to filter out TIMEOUT cqes. Former discussion: https://github.com/axboe/liburing/issues/53 I’m suggesting introducing a new SQE flag called IOSQE_IGNORE_CQE to solve this problem. For a sqe tagged with IOSQE_IGNORE_CQE flag, it won’t generate a cqe on completion. So that IORING_OP_TIMEOUT can be filtered on kernel side. In addition, `IOSQE_IGNORE_CQE` can be used to save cq size. For example `POLL_ADD(POLLIN)->READ/RECV` link chain, people usually don’t care the result of `POLL_ADD` is ( since it will always be POLLIN ), `IOSQE_IGNORE_CQE` can be set on `POLL_ADD` to save lots of cq size. Besides POLL_ADD, people usually don’t care the result of POLL_REMOVE /TIMEOUT_REMOVE/ASYNC_CANCEL/CLOSE. These operations can also be tagged with IOSQE_IGNORE_CQE. Thoughts?