void (*invalidate_folio) (struct folio *, size_t offset, size_t len);
bool (*release_folio)(struct folio *, gfp_t);
void (*free_folio)(struct folio *folio);
- void (*freepage)(struct page *);
ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter);
/*
* migrate the contents of a page to the specified target. If
void filemap_free_folio(struct address_space *mapping, struct folio *folio)
{
- void (*freepage)(struct page *);
void (*free_folio)(struct folio *);
int refs = 1;
free_folio = mapping->a_ops->free_folio;
if (free_folio)
free_folio(folio);
- freepage = mapping->a_ops->freepage;
- if (freepage)
- freepage(&folio->page);
if (folio_test_large(folio) && !folio_test_hugetlb(folio))
refs = folio_nr_pages(folio);
struct folio *fnew = page_folio(new);
struct address_space *mapping = old->mapping;
void (*free_folio)(struct folio *) = mapping->a_ops->free_folio;
- void (*freepage)(struct page *) = mapping->a_ops->freepage;
pgoff_t offset = old->index;
XA_STATE(xas, &mapping->i_pages, offset);
xas_unlock_irq(&xas);
if (free_folio)
free_folio(fold);
- if (freepage)
- freepage(old);
folio_put(fold);
}
EXPORT_SYMBOL_GPL(replace_page_cache_page);
put_swap_page(&folio->page, swap);
} else {
void (*free_folio)(struct folio *);
- void (*freepage)(struct page *);
free_folio = mapping->a_ops->free_folio;
- freepage = mapping->a_ops->freepage;
/*
* Remember a shadow entry for reclaimed file cache in
* order to detect refaults, thus thrashing, later on.
if (free_folio)
free_folio(folio);
- if (freepage)
- freepage(&folio->page);
}
return 1;