UPSTREAM: erofs: enable large folios for iomap mode
Enable large folios for iomap mode. Then the readahead routine will pass down large folios containing multiple pages. Let's enable this for non-compressed format for now, until the compression part supports large folios later. When large folios supported, the iomap routine will allocate iomap_page for each large folio and thus we need iomap_release_folio() and iomap_invalidate_folio() to free iomap_page when these folios get reclaimed or invalidated. Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com> Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com> Reviewed-by: Chao Yu <chao@kernel.org> Link: https://lore.kernel.org/r/20221130060455.44532-1-jefflexu@linux.alibaba.com Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> Bug: 318378021 Change-Id: Iedbb9a2daf132399b7a1b5ea6905977ba123ba3c (cherry picked from commit ce529cc25b184e93397b94a8a322128fc0095cbb) Signed-off-by: Sandeep Dhavale <dhavale@google.com>
This commit is contained in:
parent
2c085909e7
commit
88a1939504
@ -404,6 +404,8 @@ const struct address_space_operations erofs_raw_access_aops = {
|
|||||||
.readahead = erofs_readahead,
|
.readahead = erofs_readahead,
|
||||||
.bmap = erofs_bmap,
|
.bmap = erofs_bmap,
|
||||||
.direct_IO = noop_direct_IO,
|
.direct_IO = noop_direct_IO,
|
||||||
|
.release_folio = iomap_release_folio,
|
||||||
|
.invalidate_folio = iomap_invalidate_folio,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_FS_DAX
|
#ifdef CONFIG_FS_DAX
|
||||||
|
@ -299,6 +299,8 @@ static int erofs_fill_inode(struct inode *inode)
|
|||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
inode->i_mapping->a_ops = &erofs_raw_access_aops;
|
inode->i_mapping->a_ops = &erofs_raw_access_aops;
|
||||||
|
if (!erofs_is_fscache_mode(inode->i_sb))
|
||||||
|
mapping_set_large_folios(inode->i_mapping);
|
||||||
#ifdef CONFIG_EROFS_FS_ONDEMAND
|
#ifdef CONFIG_EROFS_FS_ONDEMAND
|
||||||
if (erofs_is_fscache_mode(inode->i_sb))
|
if (erofs_is_fscache_mode(inode->i_sb))
|
||||||
inode->i_mapping->a_ops = &erofs_fscache_access_aops;
|
inode->i_mapping->a_ops = &erofs_fscache_access_aops;
|
||||||
|
Loading…
Reference in New Issue
Block a user