diff --git a/mm/readahead.c b/mm/readahead.c index 20d36d6b055e..973de2551efe 100644 --- a/mm/readahead.c +++ b/mm/readahead.c @@ -468,20 +468,12 @@ void page_cache_ra_order(struct readahead_control *ractl, unsigned int nofs; int err = 0; gfp_t gfp = readahead_gfp_mask(mapping); - unsigned int min_ra_size = max(4, mapping_min_folio_nrpages(mapping)); - /* - * Fallback when size < min_nrpages as each folio should be - * at least min_nrpages anyway. - */ - if (!mapping_large_folio_support(mapping) || ra->size < min_ra_size) + if (!mapping_large_folio_support(mapping)) goto fallback; limit = min(limit, index + ra->size - 1); - if (new_order < mapping_max_folio_order(mapping)) - new_order += 2; - new_order = min(mapping_max_folio_order(mapping), new_order); new_order = min_t(unsigned int, new_order, ilog2(ra->size)); new_order = max(new_order, min_order); @@ -683,6 +675,7 @@ void page_cache_async_ra(struct readahead_control *ractl, ra->size = get_next_ra_size(ra, max_pages); ra->async_size = ra->size; readit: + order += 2; ractl->_index = ra->start; page_cache_ra_order(ractl, ra, order); }