mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-07 22:42:04 +00:00
mm: frontswap: split out function to clear a page out
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
parent
f9f08103eb
commit
611edfed29
@ -114,6 +114,12 @@ void __frontswap_init(unsigned type)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__frontswap_init);
|
EXPORT_SYMBOL(__frontswap_init);
|
||||||
|
|
||||||
|
static inline void __frontswap_clear(struct swap_info_struct *sis, pgoff_t offset)
|
||||||
|
{
|
||||||
|
frontswap_clear(sis, offset);
|
||||||
|
atomic_dec(&sis->frontswap_pages);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "Store" data from a page to frontswap and associate it with the page's
|
* "Store" data from a page to frontswap and associate it with the page's
|
||||||
* swaptype and offset. Page must be locked and in the swap cache.
|
* swaptype and offset. Page must be locked and in the swap cache.
|
||||||
@ -145,10 +151,8 @@ int __frontswap_store(struct page *page)
|
|||||||
the (older) page from frontswap
|
the (older) page from frontswap
|
||||||
*/
|
*/
|
||||||
inc_frontswap_failed_stores();
|
inc_frontswap_failed_stores();
|
||||||
if (dup) {
|
if (dup)
|
||||||
frontswap_clear(sis, offset);
|
__frontswap_clear(sis, offset);
|
||||||
atomic_dec(&sis->frontswap_pages);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (frontswap_writethrough_enabled)
|
if (frontswap_writethrough_enabled)
|
||||||
/* report failure so swap also writes to swap device */
|
/* report failure so swap also writes to swap device */
|
||||||
@ -191,8 +195,7 @@ void __frontswap_invalidate_page(unsigned type, pgoff_t offset)
|
|||||||
BUG_ON(sis == NULL);
|
BUG_ON(sis == NULL);
|
||||||
if (frontswap_test(sis, offset)) {
|
if (frontswap_test(sis, offset)) {
|
||||||
frontswap_ops.invalidate_page(type, offset);
|
frontswap_ops.invalidate_page(type, offset);
|
||||||
atomic_dec(&sis->frontswap_pages);
|
__frontswap_clear(sis, offset);
|
||||||
frontswap_clear(sis, offset);
|
|
||||||
inc_frontswap_invalidates();
|
inc_frontswap_invalidates();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user