On 11/20/19 7:07 PM, Jackie Liu wrote: > > >> 2019年11月21日 07:14,Jens Axboe <axboe@xxxxxxxxx> 写道: >> >> On 11/20/19 6:57 PM, Jackie Liu wrote: >>>> @@ -2957,15 +2975,14 @@ static void io_queue_sqe(struct io_kiocb *req) >>>> int ret; >>>> >>>> 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 >>>> + if (!ret) { >>>> __io_queue_sqe(req); >>>> + } else 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); >>>> + } >>>> } >>> >>> Hmm.. Why we need rewrite there? clear code? Seems to be unrelated to >>> this issue. >> >> We don't need to, and the previous patch touched it, but it's much >> easier to read after this change. Before it was: >> >> if (ret) { >> if (ret != -EIOCBQUEUED) { >> ... >> } >> } else { >> ... >> } >> >> which is now just >> >> if (!ret) { >> ... >> } else if (ret != -EIOCBQUEUED) { >> ... >> } >> >> not related to the change really, but kind of silly to make a separate >> patch for imho. >> > > Understand, thanks for explaining and fixing this problem, > And now, please add: > > Reviewed-by: Jackie Liu <liuyun01@xxxxxxxxxx> Thanks for reviewing it, I've added your reviewed-by. -- Jens Axboe