mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-10-31 18:09:19 +00:00
mm: frontswap: split out __frontswap_curr_pages
Code was duplicated in two functions, clean it up. Also, assert that the deduplicated code runs under the swap spinlock. Reviewed-by: Minchan Kim <minchan@kernel.org> Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
parent
4bb3e31ef4
commit
96253444db
1 changed files with 17 additions and 11 deletions
|
@ -216,6 +216,20 @@ void __frontswap_invalidate_area(unsigned type)
|
|||
}
|
||||
EXPORT_SYMBOL(__frontswap_invalidate_area);
|
||||
|
||||
static unsigned long __frontswap_curr_pages(void)
|
||||
{
|
||||
int type;
|
||||
unsigned long totalpages = 0;
|
||||
struct swap_info_struct *si = NULL;
|
||||
|
||||
assert_spin_locked(&swap_lock);
|
||||
for (type = swap_list.head; type >= 0; type = si->next) {
|
||||
si = swap_info[type];
|
||||
totalpages += atomic_read(&si->frontswap_pages);
|
||||
}
|
||||
return totalpages;
|
||||
}
|
||||
|
||||
/*
|
||||
* Frontswap, like a true swap device, may unnecessarily retain pages
|
||||
* under certain circumstances; "shrink" frontswap is essentially a
|
||||
|
@ -240,11 +254,7 @@ void frontswap_shrink(unsigned long target_pages)
|
|||
*/
|
||||
spin_lock(&swap_lock);
|
||||
locked = true;
|
||||
total_pages = 0;
|
||||
for (type = swap_list.head; type >= 0; type = si->next) {
|
||||
si = swap_info[type];
|
||||
total_pages += atomic_read(&si->frontswap_pages);
|
||||
}
|
||||
total_pages = __frontswap_curr_pages();
|
||||
if (total_pages <= target_pages)
|
||||
goto out;
|
||||
total_pages_to_unuse = total_pages - target_pages;
|
||||
|
@ -282,16 +292,12 @@ EXPORT_SYMBOL(frontswap_shrink);
|
|||
*/
|
||||
unsigned long frontswap_curr_pages(void)
|
||||
{
|
||||
int type;
|
||||
unsigned long totalpages = 0;
|
||||
struct swap_info_struct *si = NULL;
|
||||
|
||||
spin_lock(&swap_lock);
|
||||
for (type = swap_list.head; type >= 0; type = si->next) {
|
||||
si = swap_info[type];
|
||||
totalpages += atomic_read(&si->frontswap_pages);
|
||||
}
|
||||
totalpages = __frontswap_curr_pages();
|
||||
spin_unlock(&swap_lock);
|
||||
|
||||
return totalpages;
|
||||
}
|
||||
EXPORT_SYMBOL(frontswap_curr_pages);
|
||||
|
|
Loading…
Reference in a new issue