loff_t pos, unsigned len, struct page **pagep,
                           void **fsdata)
 {
+       fgf_t fgp = FGP_WRITEBEGIN;
        struct folio *folio;
        int once_thru = 0;
        int ret;
        dfprintk(PAGECACHE, "NFS: write_begin(%pD2(%lu), %u@%lld)\n",
                file, mapping->host->i_ino, len, (long long) pos);
 
+       fgp |= fgf_set_order(len);
 start:
-       folio = __filemap_get_folio(mapping, pos >> PAGE_SHIFT, FGP_WRITEBEGIN,
+       folio = __filemap_get_folio(mapping, pos >> PAGE_SHIFT, fgp,
                                    mapping_gfp_mask(mapping));
        if (IS_ERR(folio))
                return PTR_ERR(folio);
 
                        inode->i_fop = NFS_SB(sb)->nfs_client->rpc_ops->file_ops;
                        inode->i_data.a_ops = &nfs_file_aops;
                        nfs_inode_init_regular(nfsi);
+                       mapping_set_large_folios(inode->i_mapping);
                } else if (S_ISDIR(inode->i_mode)) {
                        inode->i_op = NFS_SB(sb)->nfs_client->rpc_ops->dir_inode_ops;
                        inode->i_fop = &nfs_dir_operations;