aboutsummaryrefslogtreecommitdiffstats
path: root/mm/swapfile.c
diff options
context:
space:
mode:
authorKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>2009-06-16 18:32:52 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-16 22:47:42 -0400
commitcb4b86ba47bb0937b71fb825b3ed88adf7a190f0 (patch)
tree4b8528ba914a315e5857e7fe2a6e7d415f2e6650 /mm/swapfile.c
parent6837765963f1723e80ca97b1fae660f3a60d77df (diff)
mm: add swap cache interface for swap reference
In a following patch, the usage of swap cache is recorded into swap_map. This patch is for necessary interface changes to do that. 2 interfaces: - swapcache_prepare() - swapcache_free() are added for allocating/freeing refcnt from swap-cache to existing swap entries. But implementation itself is not changed under this patch. At adding swapcache_free(), memcg's hook code is moved under swapcache_free(). This is better than using scattered hooks. Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Reviewed-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Acked-by: Balbir Singh <balbir@in.ibm.com> Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Li Zefan <lizf@cn.fujitsu.com> Cc: Dhaval Giani <dhaval@linux.vnet.ibm.com> Cc: YAMAMOTO Takashi <yamamoto@valinux.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r--mm/swapfile.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 312fafe0ab6e..3187079903fd 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -510,6 +510,16 @@ void swap_free(swp_entry_t entry)
510} 510}
511 511
512/* 512/*
513 * Called after dropping swapcache to decrease refcnt to swap entries.
514 */
515void swapcache_free(swp_entry_t entry, struct page *page)
516{
517 if (page)
518 mem_cgroup_uncharge_swapcache(page, entry);
519 return swap_free(entry);
520}
521
522/*
513 * How many references to page are currently swapped out? 523 * How many references to page are currently swapped out?
514 */ 524 */
515static inline int page_swapcount(struct page *page) 525static inline int page_swapcount(struct page *page)
@@ -1979,6 +1989,15 @@ bad_file:
1979 goto out; 1989 goto out;
1980} 1990}
1981 1991
1992/*
1993 * Called when allocating swap cache for exising swap entry,
1994 */
1995int swapcache_prepare(swp_entry_t entry)
1996{
1997 return swap_duplicate(entry);
1998}
1999
2000
1982struct swap_info_struct * 2001struct swap_info_struct *
1983get_swap_info_struct(unsigned type) 2002get_swap_info_struct(unsigned type)
1984{ 2003{