Skip to content

Commit

Permalink
mm: frontswap: split out __frontswap_curr_pages
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
sashalevin authored and konradwilk committed Jun 11, 2012
1 parent 4bb3e31 commit 9625344
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions mm/frontswap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 9625344

Please sign in to comment.