*/
};
-static inline swp_entry_t folio_swap_entry(struct folio *folio)
-{
- return folio->swap;
-}
-
static inline swp_entry_t page_swap_entry(struct page *page)
{
struct folio *folio = page_folio(page);
- swp_entry_t entry = folio_swap_entry(folio);
+ swp_entry_t entry = folio->swap;
entry.val += folio_page_idx(folio, page);
return entry;
}
-static inline void folio_set_swap_entry(struct folio *folio, swp_entry_t entry)
-{
- folio->swap = entry;
-}
-
/* linux/mm/workingset.c */
bool workingset_test_recent(void *shadow, bool file, bool *workingset);
void workingset_age_nonresident(struct lruvec *lruvec, unsigned long nr_pages);
folio_add_lru(folio);
/* To provide entry to swap_readpage() */
- folio_set_swap_entry(folio, entry);
+ folio->swap = entry;
swap_readpage(page, true, NULL);
folio->private = NULL;
}
int error;
old = *foliop;
- entry = folio_swap_entry(old);
+ entry = old->swap;
swap_index = swp_offset(entry);
swap_mapping = swap_address_space(entry);
__folio_set_locked(new);
__folio_set_swapbacked(new);
folio_mark_uptodate(new);
- folio_set_swap_entry(new, entry);
+ new->swap = entry;
folio_set_swapcache(new);
/*
/* We have to do this with folio locked to prevent races */
folio_lock(folio);
if (!folio_test_swapcache(folio) ||
- folio_swap_entry(folio).val != swap.val ||
+ folio->swap.val != swap.val ||
!shmem_confirm_swap(mapping, index, swap)) {
error = -EEXIST;
goto unlock;
folio_ref_add(folio, nr);
folio_set_swapcache(folio);
- folio_set_swap_entry(folio, entry);
+ folio->swap = entry;
do {
xas_lock_irq(&xas);
VM_BUG_ON_PAGE(entry != folio, entry);
xas_next(&xas);
}
- entry.val = 0;
- folio_set_swap_entry(folio, entry);
+ folio->swap.val = 0;
folio_clear_swapcache(folio);
address_space->nrpages -= nr;
__node_stat_mod_folio(folio, NR_FILE_PAGES, -nr);
*/
void delete_from_swap_cache(struct folio *folio)
{
- swp_entry_t entry = folio_swap_entry(folio);
+ swp_entry_t entry = folio->swap;
struct address_space *address_space = swap_address_space(entry);
xa_lock_irq(&address_space->i_pages);
static bool folio_swapped(struct folio *folio)
{
- swp_entry_t entry = folio_swap_entry(folio);
+ swp_entry_t entry = folio->swap;
struct swap_info_struct *si = _swap_info_get(entry);
if (!si)
return NULL;
if (unlikely(folio_test_swapcache(folio)))
- return swap_address_space(folio_swap_entry(folio));
+ return swap_address_space(folio->swap);
mapping = folio->mapping;
if ((unsigned long)mapping & PAGE_MAPPING_FLAGS)
}
if (folio_test_swapcache(folio)) {
- swp_entry_t swap = folio_swap_entry(folio);
+ swp_entry_t swap = folio->swap;
if (reclaimed && !mapping_exiting(mapping))
shadow = workingset_eviction(folio, target_memcg);
bool zswap_store(struct folio *folio)
{
- swp_entry_t swp = folio_swap_entry(folio);
+ swp_entry_t swp = folio->swap;
int type = swp_type(swp);
pgoff_t offset = swp_offset(swp);
struct page *page = &folio->page;
bool zswap_load(struct folio *folio)
{
- swp_entry_t swp = folio_swap_entry(folio);
+ swp_entry_t swp = folio->swap;
int type = swp_type(swp);
pgoff_t offset = swp_offset(swp);
struct page *page = &folio->page;