folio
struct folio *folio_alloc(gfp_t gfp, unsigned int order);
static inline struct folio *
folio_get(struct folio *folio)
get_page(&folio->page);
folio_put(struct folio *folio)
put_page(&folio->page);
struct folio **folios;
folio_pfn(struct folio *folio)
return (page_to_pfn(&folio->page));
folio_nr_pages(struct folio *folio)
folio_size(struct folio *folio)
folio_mark_dirty(struct folio *folio)
set_page_dirty(&folio->page);
folio_address(const struct folio *folio)
return (page_address(&folio->page));
const struct page *: (const struct folio *)(p), \
struct page *: (struct folio *)(p)))
folio_batch_add(struct folio_batch *fbatch, struct folio *folio)
fbatch->folios[fbatch->nr++] = folio;
struct folio;
struct folio *folios[PAGEVEC_SIZE];
sg_set_folio(struct scatterlist *sg, struct folio *folio, size_t len,
sg_set_page(sg, &folio->page, len, offset);
static inline struct folio *
folio_mark_accessed(struct folio *folio)
mark_page_accessed(&folio->page);
struct folio *
struct folio *folio;
folio = (struct folio *)page;
return (folio);
CTASSERT(offsetof(struct folio, page) == 0);