]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iov_iter: convert iter_xarray_populate_pages() to use folios
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 2 Apr 2025 21:06:05 +0000 (22:06 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 12 May 2025 00:48:05 +0000 (17:48 -0700)
ITER_XARRAY is exclusively used with xarrays that contain folios, not
pages, so extract folio pointers from it, not page pointers.  Removes a
hidden call to compound_head() and a use of find_subpage().

Link: https://lkml.kernel.org/r/20250402210612.2444135-4-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>
lib/iov_iter.c

index bc9391e55d57ea52d47f4f24635e3db3efcb5027..3e340d1fcadcfc10c9d26053ba1edcef3430af54 100644 (file)
@@ -1059,22 +1059,22 @@ static ssize_t iter_xarray_populate_pages(struct page **pages, struct xarray *xa
                                          pgoff_t index, unsigned int nr_pages)
 {
        XA_STATE(xas, xa, index);
-       struct page *page;
+       struct folio *folio;
        unsigned int ret = 0;
 
        rcu_read_lock();
-       for (page = xas_load(&xas); page; page = xas_next(&xas)) {
-               if (xas_retry(&xas, page))
+       for (folio = xas_load(&xas); folio; folio = xas_next(&xas)) {
+               if (xas_retry(&xas, folio))
                        continue;
 
-               /* Has the page moved or been split? */
-               if (unlikely(page != xas_reload(&xas))) {
+               /* Has the folio moved or been split? */
+               if (unlikely(folio != xas_reload(&xas))) {
                        xas_reset(&xas);
                        continue;
                }
 
-               pages[ret] = find_subpage(page, xas.xa_index);
-               get_page(pages[ret]);
+               pages[ret] = folio_file_page(folio, xas.xa_index);
+               folio_get(folio);
                if (++ret == nr_pages)
                        break;
        }