It's a trivial simplification for get_next_ra_size and clear enough for humans to understand.
It also fixes potential overflow if ra->size(< ra_pages) is too large. Cc: Fengguang Wu <fengguang...@intel.com> Signed-off-by: Gao Xiang <hsiang...@aol.com> --- mm/readahead.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/mm/readahead.c b/mm/readahead.c index 4e63014..205ac34 100644 --- a/mm/readahead.c +++ b/mm/readahead.c @@ -272,17 +272,15 @@ static unsigned long get_init_ra_size(unsigned long size, unsigned long max) * return it as the new window size. */ static unsigned long get_next_ra_size(struct file_ra_state *ra, - unsigned long max) + unsigned long max) { unsigned long cur = ra->size; - unsigned long newsize; if (cur < max / 16) - newsize = 4 * cur; - else - newsize = 2 * cur; - - return min(newsize, max); + return 4 * cur; + if (cur <= max / 2) + return 2 * cur; + return max; } /* -- 2.7.4