mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
nfs: add support for large folios
NFS already is void of folio size assumption, so just pass the chunk size to __filemap_get_folio and set the large folio address_space flag for all regular files. Signed-off-by: Christoph Hellwig <hch@lst.de> Tested-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
9aac777aaf
commit
49b29a573d
@ -339,6 +339,7 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping,
|
||||
loff_t pos, unsigned len, struct page **pagep,
|
||||
void **fsdata)
|
||||
{
|
||||
fgf_t fgp = FGP_WRITEBEGIN;
|
||||
struct folio *folio;
|
||||
int once_thru = 0;
|
||||
int ret;
|
||||
@ -346,8 +347,9 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping,
|
||||
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);
|
||||
|
@ -491,6 +491,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user