diff options
author | Tim Gardner <tim.gardner@canonical.com> | 2009-03-15 13:38:17 -0600 |
---|---|---|
committer | John Rigby <john.rigby@linaro.org> | 2012-06-23 23:13:41 -0600 |
commit | 6abb66725eda99546bcfd684c127c8c4f1f184c8 (patch) | |
tree | 68ea49ae513cd9456662cb12773b237b805ed488 /mm | |
parent | 7364b82ec31509bb7af8398c844b9011e4e4ae66 (diff) |
UBUNTU: SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache
Code is required for ubuntu/compcache
Signed-off-by: Ben Collins <ben.collins@canonical.com>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/swapfile.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c index fafc26d1b1d..c8ac1899892 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -561,6 +561,12 @@ static unsigned char swap_entry_free(struct swap_info_struct *p, disk->fops->swap_slot_free_notify(p->bdev, offset); } + if (!swap_count(count)) { + mem_cgroup_uncharge_swap(entry); + if (p->notify_swap_entry_free_fn) + p->notify_swap_entry_free_fn(offset); + } + return usage; } @@ -2293,6 +2299,23 @@ int swapcache_prepare(swp_entry_t entry) } /* + * Sets callback for event when swap_map[offset] == 0 + * i.e. page at this swap offset is not longer used. + * + * type: identifies swap file + * fn: callback function + */ +void set_notify_swap_entry_free(unsigned type, void (*fn) (unsigned long)) +{ + struct swap_info_struct *sis; + sis = swap_info[type]; + BUG_ON(!sis); + sis->notify_swap_entry_free_fn = fn; + return; +} +EXPORT_SYMBOL(set_notify_swap_entry_free); + +/* * add_swap_count_continuation - called when a swap count is duplicated * beyond SWAP_MAP_MAX, it allocates a new page and links that to the entry's * page of the original vmalloc'ed swap_map, to hold the continuation count |