Skip to content

Commit d996fc7

Browse files
author
Matthew Wilcox (Oracle)
committed
filemap: Convert filemap_read() to use a folio
We know the pagevec always contains folios, but use page_folio() anyway instead of casting. Removes a few calls to legacy functions. Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: William Kucharski <[email protected]>
1 parent 78f4266 commit d996fc7

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

mm/filemap.c

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2668,30 +2668,26 @@ ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *iter,
26682668
mark_page_accessed(pvec.pages[0]);
26692669

26702670
for (i = 0; i < pagevec_count(&pvec); i++) {
2671-
struct page *page = pvec.pages[i];
2672-
size_t page_size = thp_size(page);
2673-
size_t offset = iocb->ki_pos & (page_size - 1);
2671+
struct folio *folio = page_folio(pvec.pages[i]);
2672+
size_t fsize = folio_size(folio);
2673+
size_t offset = iocb->ki_pos & (fsize - 1);
26742674
size_t bytes = min_t(loff_t, end_offset - iocb->ki_pos,
2675-
page_size - offset);
2675+
fsize - offset);
26762676
size_t copied;
26772677

2678-
if (end_offset < page_offset(page))
2678+
if (end_offset < folio_pos(folio))
26792679
break;
26802680
if (i > 0)
2681-
mark_page_accessed(page);
2681+
folio_mark_accessed(folio);
26822682
/*
2683-
* If users can be writing to this page using arbitrary
2684-
* virtual addresses, take care about potential aliasing
2685-
* before reading the page on the kernel side.
2683+
* If users can be writing to this folio using arbitrary
2684+
* virtual addresses, take care of potential aliasing
2685+
* before reading the folio on the kernel side.
26862686
*/
2687-
if (writably_mapped) {
2688-
int j;
2689-
2690-
for (j = 0; j < thp_nr_pages(page); j++)
2691-
flush_dcache_page(page + j);
2692-
}
2687+
if (writably_mapped)
2688+
flush_dcache_folio(folio);
26932689

2694-
copied = copy_page_to_iter(page, offset, bytes, iter);
2690+
copied = copy_folio_to_iter(folio, offset, bytes, iter);
26952691

26962692
already_read += copied;
26972693
iocb->ki_pos += copied;

0 commit comments

Comments
 (0)