On 9/29/20 6:00 AM, Hao Xu wrote: > The async buffered reads feature is not working when readahead is > turned off. There are two things to concern: > > - when doing retry in io_read, not only the IOCB_WAITQ flag but also > the IOCB_NOWAIT flag is still set, which makes it goes to would_block > phase in generic_file_buffered_read() and then return -EAGAIN. After > that, the io-wq thread work is queued, and later doing the async > reads in the old way. > > - even if we remove IOCB_NOWAIT when doing retry, the feature is still > not running properly, since in generic_file_buffered_read() it goes to > lock_page_killable() after calling mapping->a_ops->readpage() to do > IO, and thus causing process to sleep. Thanks, this looks great, and avoids cases of io-wq punt where we don't need it. I'm going to run this through full testing, but I think this looks good to me. -- Jens Axboe