mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00: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;
|
||||
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user