Nick Piggin <nickpiggin@xxxxxxxxxxxx> wrote:
That's one of its usage patterns. It's also supposed to detect the
fixed-sized-reads-seeking-all-over-the-place situation. In which case it's
supposed to submit correctly-sized multi-page BIOs. But it's not working
right for this workload.
A naive solution would be to add special-case code which always does the
fixed-size readahead after a seek. Basically that's
if (ra->next_size == -1UL)
force_page_cache_readahead(...)
I think a better solution to this case would be to ensure the
readahead window is always min(size of read, some large number);
That would cause the kernel to perform lots of pointless pagecache lookups
when the file is already 100% cached.