nfs: Convert to release_folio
Use folios throughout the release_folio paths. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Jeff Layton <jlayton@kernel.org>
This commit is contained in:
Родитель
a613b861aa
Коммит
3577da4aa8
|
@ -415,19 +415,19 @@ static void nfs_invalidate_folio(struct folio *folio, size_t offset,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Attempt to release the private state associated with a page
|
* Attempt to release the private state associated with a folio
|
||||||
* - Called if either PG_private or PG_fscache is set on the page
|
* - Called if either private or fscache flags are set on the folio
|
||||||
* - Caller holds page lock
|
* - Caller holds folio lock
|
||||||
* - Return true (may release page) or false (may not)
|
* - Return true (may release folio) or false (may not)
|
||||||
*/
|
*/
|
||||||
static int nfs_release_page(struct page *page, gfp_t gfp)
|
static bool nfs_release_folio(struct folio *folio, gfp_t gfp)
|
||||||
{
|
{
|
||||||
dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page);
|
dfprintk(PAGECACHE, "NFS: release_folio(%p)\n", folio);
|
||||||
|
|
||||||
/* If PagePrivate() is set, then the page is not freeable */
|
/* If the private flag is set, then the folio is not freeable */
|
||||||
if (PagePrivate(page))
|
if (folio_test_private(folio))
|
||||||
return 0;
|
return false;
|
||||||
return nfs_fscache_release_page(page, gfp);
|
return nfs_fscache_release_folio(folio, gfp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nfs_check_dirty_writeback(struct folio *folio,
|
static void nfs_check_dirty_writeback(struct folio *folio,
|
||||||
|
@ -522,7 +522,7 @@ const struct address_space_operations nfs_file_aops = {
|
||||||
.write_begin = nfs_write_begin,
|
.write_begin = nfs_write_begin,
|
||||||
.write_end = nfs_write_end,
|
.write_end = nfs_write_end,
|
||||||
.invalidate_folio = nfs_invalidate_folio,
|
.invalidate_folio = nfs_invalidate_folio,
|
||||||
.releasepage = nfs_release_page,
|
.release_folio = nfs_release_folio,
|
||||||
.direct_IO = nfs_direct_IO,
|
.direct_IO = nfs_direct_IO,
|
||||||
#ifdef CONFIG_MIGRATION
|
#ifdef CONFIG_MIGRATION
|
||||||
.migratepage = nfs_migrate_page,
|
.migratepage = nfs_migrate_page,
|
||||||
|
|
|
@ -48,14 +48,14 @@ extern void nfs_fscache_release_file(struct inode *, struct file *);
|
||||||
extern int __nfs_fscache_read_page(struct inode *, struct page *);
|
extern int __nfs_fscache_read_page(struct inode *, struct page *);
|
||||||
extern void __nfs_fscache_write_page(struct inode *, struct page *);
|
extern void __nfs_fscache_write_page(struct inode *, struct page *);
|
||||||
|
|
||||||
static inline int nfs_fscache_release_page(struct page *page, gfp_t gfp)
|
static inline bool nfs_fscache_release_folio(struct folio *folio, gfp_t gfp)
|
||||||
{
|
{
|
||||||
if (PageFsCache(page)) {
|
if (folio_test_fscache(folio)) {
|
||||||
if (current_is_kswapd() || !(gfp & __GFP_FS))
|
if (current_is_kswapd() || !(gfp & __GFP_FS))
|
||||||
return false;
|
return false;
|
||||||
wait_on_page_fscache(page);
|
folio_wait_fscache(folio);
|
||||||
fscache_note_page_release(nfs_i_fscache(page->mapping->host));
|
fscache_note_page_release(nfs_i_fscache(folio->mapping->host));
|
||||||
nfs_inc_fscache_stats(page->mapping->host,
|
nfs_inc_fscache_stats(folio->mapping->host,
|
||||||
NFSIOS_FSCACHE_PAGES_UNCACHED);
|
NFSIOS_FSCACHE_PAGES_UNCACHED);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -129,9 +129,9 @@ static inline void nfs_fscache_open_file(struct inode *inode,
|
||||||
struct file *filp) {}
|
struct file *filp) {}
|
||||||
static inline void nfs_fscache_release_file(struct inode *inode, struct file *file) {}
|
static inline void nfs_fscache_release_file(struct inode *inode, struct file *file) {}
|
||||||
|
|
||||||
static inline int nfs_fscache_release_page(struct page *page, gfp_t gfp)
|
static inline bool nfs_fscache_release_folio(struct folio *folio, gfp_t gfp)
|
||||||
{
|
{
|
||||||
return 1; /* True: may release page */
|
return true; /* may release folio */
|
||||||
}
|
}
|
||||||
static inline int nfs_fscache_read_page(struct inode *inode, struct page *page)
|
static inline int nfs_fscache_read_page(struct inode *inode, struct page *page)
|
||||||
{
|
{
|
||||||
|
|
Загрузка…
Ссылка в новой задаче