mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 20:33:49 -04:00
filemap: convert __readahead_batch() to use a folio
Extract folios from i_mapping, not pages. Removes a hidden call to compound_head(), a use of thp_nr_pages() and an unnecessary assertion that we didn't find a tail page in the page cache. Link: https://lkml.kernel.org/r/20250402210612.2444135-7-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
9c532d7908
commit
8dfc8cbf7b
@@ -1424,7 +1424,7 @@ static inline unsigned int __readahead_batch(struct readahead_control *rac,
|
||||
{
|
||||
unsigned int i = 0;
|
||||
XA_STATE(xas, &rac->mapping->i_pages, 0);
|
||||
struct page *page;
|
||||
struct folio *folio;
|
||||
|
||||
BUG_ON(rac->_batch_count > rac->_nr_pages);
|
||||
rac->_nr_pages -= rac->_batch_count;
|
||||
@@ -1433,13 +1433,12 @@ static inline unsigned int __readahead_batch(struct readahead_control *rac,
|
||||
|
||||
xas_set(&xas, rac->_index);
|
||||
rcu_read_lock();
|
||||
xas_for_each(&xas, page, rac->_index + rac->_nr_pages - 1) {
|
||||
if (xas_retry(&xas, page))
|
||||
xas_for_each(&xas, folio, rac->_index + rac->_nr_pages - 1) {
|
||||
if (xas_retry(&xas, folio))
|
||||
continue;
|
||||
VM_BUG_ON_PAGE(!PageLocked(page), page);
|
||||
VM_BUG_ON_PAGE(PageTail(page), page);
|
||||
array[i++] = page;
|
||||
rac->_batch_count += thp_nr_pages(page);
|
||||
VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio);
|
||||
array[i++] = folio_page(folio, 0);
|
||||
rac->_batch_count += folio_nr_pages(folio);
|
||||
if (i == array_sz)
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user