mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
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: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
parent
326a6fd960
commit
584f60ba22
|
|
@ -821,23 +821,24 @@ static int ntfs_get_frame_pages(struct address_space *mapping, pgoff_t index,
|
||||||
*frame_uptodate = true;
|
*frame_uptodate = true;
|
||||||
|
|
||||||
for (npages = 0; npages < pages_per_frame; npages++, index++) {
|
for (npages = 0; npages < pages_per_frame; npages++, index++) {
|
||||||
struct page *page;
|
struct folio *folio;
|
||||||
|
|
||||||
page = find_or_create_page(mapping, index, gfp_mask);
|
folio = __filemap_get_folio(mapping, index,
|
||||||
if (!page) {
|
FGP_LOCK | FGP_ACCESSED | FGP_CREAT, gfp_mask);
|
||||||
|
if (IS_ERR(folio)) {
|
||||||
while (npages--) {
|
while (npages--) {
|
||||||
page = pages[npages];
|
folio = page_folio(pages[npages]);
|
||||||
unlock_page(page);
|
folio_unlock(folio);
|
||||||
put_page(page);
|
folio_put(folio);
|
||||||
}
|
}
|
||||||
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PageUptodate(page))
|
if (!folio_test_uptodate(folio))
|
||||||
*frame_uptodate = false;
|
*frame_uptodate = false;
|
||||||
|
|
||||||
pages[npages] = page;
|
pages[npages] = &folio->page;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user