mm/swap: inline folio_set_swap_entry() and folio_swap_entry()

Let's simply work on the folio directly and remove the helpers.

Link: https://lkml.kernel.org/r/20230821160849.531668-4-david@redhat.com
Signed-off-by: David Hildenbrand <david@redhat.com>
Suggested-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: Chris Li <chrisl@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Dan Streetman <ddstreet@ieee.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Seth Jennings <sjenning@redhat.com>
Cc: Vitaly Wool <vitaly.wool@konsulko.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
David Hildenbrand 2023-08-21 18:08:48 +02:00 committed by Andrew Morton
parent 85a1333417
commit 3d2c908768
8 changed files with 13 additions and 24 deletions

View File

@ -333,25 +333,15 @@ struct swap_info_struct {
*/
};
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);

View File

@ -3828,7 +3828,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
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;
}

View File

@ -1642,7 +1642,7 @@ static int shmem_replace_folio(struct folio **foliop, gfp_t gfp,
int error;
old = *foliop;
entry = folio_swap_entry(old);
entry = old->swap;
swap_index = swp_offset(entry);
swap_mapping = swap_address_space(entry);
@ -1663,7 +1663,7 @@ static int shmem_replace_folio(struct folio **foliop, gfp_t gfp,
__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);
/*
@ -1785,7 +1785,7 @@ static int shmem_swapin_folio(struct inode *inode, pgoff_t index,
/* 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;

View File

@ -100,7 +100,7 @@ int add_to_swap_cache(struct folio *folio, swp_entry_t entry,
folio_ref_add(folio, nr);
folio_set_swapcache(folio);
folio_set_swap_entry(folio, entry);
folio->swap = entry;
do {
xas_lock_irq(&xas);
@ -156,8 +156,7 @@ void __delete_from_swap_cache(struct folio *folio,
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);
@ -233,7 +232,7 @@ fail:
*/
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);

View File

@ -1536,7 +1536,7 @@ unlock_out:
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)

View File

@ -764,7 +764,7 @@ struct address_space *folio_mapping(struct folio *folio)
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)

View File

@ -1423,7 +1423,7 @@ static int __remove_mapping(struct address_space *mapping, struct folio *folio,
}
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);

View File

@ -1190,7 +1190,7 @@ static void zswap_fill_page(void *ptr, unsigned long value)
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;
@ -1370,7 +1370,7 @@ shrink:
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;