On 7/12/19 9:58 PM, Zhengyuan Liu wrote: > We would queue a work for each req in defer and link list without > increasing async->cnt, so we shouldn't decrease it while exiting > from workqueue as well as shouldn't process the req in async list. Took a closer look at this one. First comment, can you rewrite the subject line? I honestly don't quite know what that is trying to say. Apart from that: > diff --git a/fs/io_uring.c b/fs/io_uring.c > index 7e932c572f26..3e48fd7cd08f 100644 > --- a/fs/io_uring.c > +++ b/fs/io_uring.c > @@ -333,7 +333,8 @@ struct io_kiocb { > #define REQ_F_IO_DRAIN 16 /* drain existing IO first */ > #define REQ_F_IO_DRAINED 32 /* drain done */ > #define REQ_F_LINK 64 /* linked sqes */ > -#define REQ_F_FAIL_LINK 128 /* fail rest of links */ > +#define REQ_F_LINKED 128 /* linked sqes done */ > +#define REQ_F_FAIL_LINK 256 /* fail rest of links */ _LINKED is poorly chosen, hard to know what the difference between _LINK and _LINKED is here, they seem identical. Please rename it to _LINK_DONE or something like that. Thanks! -- Jens Axboe