ntfs3: Convert ntfs_write_begin to use a folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 22 Apr 2024 19:31:52 +0000 (20:31 +0100)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Wed, 26 Jun 2024 12:48:54 +0000 (15:48 +0300)
Retrieve a folio from the page cache instead of a precise page.
This function is now large folio safe, but its called function is not.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/inode.c

index baa81c95cc0201c8f57a79daf79b47ba32ed1c05..7288787b7ff2b6390d9a1db712f8821ea7e33c88 100644 (file)
@@ -913,24 +913,25 @@ int ntfs_write_begin(struct file *file, struct address_space *mapping,
 
        *pagep = NULL;
        if (is_resident(ni)) {
-               struct page *page =
-                       grab_cache_page_write_begin(mapping, pos >> PAGE_SHIFT);
+               struct folio *folio = __filemap_get_folio(mapping,
+                               pos >> PAGE_SHIFT, FGP_WRITEBEGIN,
+                               mapping_gfp_mask(mapping));
 
-               if (!page) {
-                       err = -ENOMEM;
+               if (IS_ERR(folio)) {
+                       err = PTR_ERR(folio);
                        goto out;
                }
 
                ni_lock(ni);
-               err = attr_data_read_resident(ni, page);
+               err = attr_data_read_resident(ni, &folio->page);
                ni_unlock(ni);
 
                if (!err) {
-                       *pagep = page;
+                       *pagep = &folio->page;
                        goto out;
                }
-               unlock_page(page);
-               put_page(page);
+               folio_unlock(folio);
+               folio_put(folio);
 
                if (err != E_NTFS_NONRESIDENT)
                        goto out;