static void io_queue_sqe(struct io_kiocb *req)
{
	int ret;

	if (unlikely(req->ctx->drain_next)) {
		req->flags |= REQ_F_IO_DRAIN;
		req->ctx->drain_next = false;
	}
	req->ctx->drain_next = (req->flags & REQ_F_DRAIN_LINK);

	ret = io_req_defer(req);
	if (ret) {
		if (ret != -EIOCBQUEUED) {
			io_cqring_add_event(req, ret);
			if (req->flags & REQ_F_LINK)
				req->flags |= REQ_F_FAIL_LINK;
			io_double_put_req(req);
		}
	} else
		__io_queue_sqe(req);
}
static void io_queue_sqe(struct io_kiocb *req)
{
	int ret;

	if (unlikely(req->ctx->drain_next)) {
		req->flags |= REQ_F_IO_DRAIN;
		req->ctx->drain_next = false;
	}
	req->ctx->drain_next = (req->flags & REQ_F_DRAIN_LINK);

	ret = io_req_defer(req);
	if (ret) {
		if (ret != -EIOCBQUEUED) {
			io_cqring_add_event(req, ret);
			if (req->flags & REQ_F_LINK)
				req->flags |= REQ_F_FAIL_LINK;
			io_double_put_req(req);
		}
	} else
		__io_queue_sqe(req);
}