diff options
author | Sasha Levin <levinsasha928@gmail.com> | 2012-06-10 12:51:07 +0200 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-07-19 18:51:14 -0400 |
commit | 611edfed29f406eedf66030e0864b7d3fec23f21 (patch) | |
tree | 1143bbfb5cfce7a395a41af4f0bc0acbcd185e7c | |
parent | f9f08103ebd634999abfccc8ff94985530f14d74 (diff) |
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>
-rw-r--r-- | mm/frontswap.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/mm/frontswap.c b/mm/frontswap.c index 7c26e899cec9..7fb9538bec23 100644 --- a/mm/frontswap.c +++ b/mm/frontswap.c @@ -114,6 +114,12 @@ void __frontswap_init(unsigned type) } 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 * 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 */ inc_frontswap_failed_stores(); - if (dup) { - frontswap_clear(sis, offset); - atomic_dec(&sis->frontswap_pages); - } + if (dup) + __frontswap_clear(sis, offset); } if (frontswap_writethrough_enabled) /* 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); if (frontswap_test(sis, offset)) { frontswap_ops.invalidate_page(type, offset); - atomic_dec(&sis->frontswap_pages); - frontswap_clear(sis, offset); + __frontswap_clear(sis, offset); inc_frontswap_invalidates(); } } |