Unverified Commit 584f60ba authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle) Committed by Konstantin Komarov
Browse files

ntfs3: Convert ntfs_get_frame_pages() to use a folio



The function still takes an array of pages, but use a folio internally.
This function would deadlock against itself if used with large folios
(as it locks each page), so we can be a little sloppy with the conversion
back from folio to page for now.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent 326a6fd9
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -821,23 +821,24 @@ static int ntfs_get_frame_pages(struct address_space *mapping, pgoff_t index,
	*frame_uptodate = true;

	for (npages = 0; npages < pages_per_frame; npages++, index++) {
		struct page *page;
		struct folio *folio;

		page = find_or_create_page(mapping, index, gfp_mask);
		if (!page) {
		folio = __filemap_get_folio(mapping, index,
				FGP_LOCK | FGP_ACCESSED | FGP_CREAT, gfp_mask);
		if (IS_ERR(folio)) {
			while (npages--) {
				page = pages[npages];
				unlock_page(page);
				put_page(page);
				folio = page_folio(pages[npages]);
				folio_unlock(folio);
				folio_put(folio);
			}

			return -ENOMEM;
		}

		if (!PageUptodate(page))
		if (!folio_test_uptodate(folio))
			*frame_uptodate = false;

		pages[npages] = page;
		pages[npages] = &folio->page;
	}

	return 0;