diff --git a/mm/readahead.c b/mm/readahead.c index ba22d7fe0afb..72c17e77a6c7 100644 --- a/mm/readahead.c +++ b/mm/readahead.c @@ -234,6 +234,8 @@ int force_page_cache_readahead(struct address_space *mapping, struct file *filp, /* * Set the initial window size, round to next power of 2 and square + * Small size is not dependant on max value - only a one-page read is regarded + * as small. * for small size, x 4 for medium, and x 2 for large * for 128k (32 page) max ra * 1-8 page = 32k initial, > 8 page = 128k initial @@ -242,7 +244,7 @@ static unsigned long get_init_ra_size(unsigned long size, unsigned long max) { unsigned long newsize = roundup_pow_of_two(size); - if (newsize <= max / 32) + if (newsize <= 1) newsize = newsize * 4; else if (newsize <= max / 4) newsize = newsize * 2;