在 2020/10/22 下午10:10, Matthew Wilcox 写道:
On Thu, Oct 22, 2020 at 09:58:34PM +0800, Hao Xu wrote:
The commit 324bcf54c449 changed the code path of async buffered reads
to go with the page_cache_sync_readahead() way when readahead is
disabled, meanwhile the sync buffered reads are forced to do IO in the
above way as well, which makes it go to a more complex code path.
But ->readpage is (increasingly) synchronous while readahead should be
used to start async I/Os. I'm pretty sure Jens meant to do exactly what
he did.
Yes, we should start async I/Os with readahead, but why should we do the
sync I/O like syscall read() in this way too when ra->ra_pages is 0?