Re: [PATCH] readahead: Update the file_ra_state.ra_pages with each readahead operation

From: Matthew Wilcox
Date: Mon Oct 30 2023 - 12:47:19 EST


On Mon, Oct 30, 2023 at 03:41:30PM +0800, Youling Tang wrote:
> From: Youling Tang <tangyouling@xxxxxxxxxx>
>
> Changing the read_ahead_kb value midway through a sequential read of a
> large file found that the ra->ra_pages value remained unchanged (new
> ra_pages can only be detected the next time the file is opened). Because
> file_ra_state_init() is only called once in do_dentry_open() in most
> cases.
>
> In ondemand_readahead(), update bdi->ra_pages to ra->ra_pages to ensure
> that the maximum pages that can be allocated by the readahead algorithm
> are the same as (read_ahead_kb * 1024) / PAGE_SIZE after read_ahead_kb
> is modified.

Explain to me why this is the correct behaviour.

Many things are only initialised at open() time and are not updated until
the next open(). This is longstanding behaviour that some apps expect.
Why should we change it?