On Mon, Oct 30, 2023 at 03:41:30PM +0800, Youling Tang wrote:Because I initially expected to immediately improve the current read performance
From: Youling Tang <tangyouling@xxxxxxxxxx>Explain to me why this is the correct behaviour.
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.
Many things are only initialised at open() time and are not updated untilThanks for your explanation. I will discard this change if the next open update is in line with the
the next open(). This is longstanding behaviour that some apps expect.