aboutsummaryrefslogtreecommitdiffstats
path: root/mm/frontswap.c
diff options
context:
space:
mode:
authorSasha Levin <levinsasha928@gmail.com>2012-06-10 06:51:07 -0400
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2012-07-19 18:51:14 -0400
commit611edfed29f406eedf66030e0864b7d3fec23f21 (patch)
tree1143bbfb5cfce7a395a41af4f0bc0acbcd185e7c /mm/frontswap.c
parentf9f08103ebd634999abfccc8ff94985530f14d74 (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>
Diffstat (limited to 'mm/frontswap.c')
-rw-r--r--mm/frontswap.c15
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)
114} 114}
115EXPORT_SYMBOL(__frontswap_init); 115EXPORT_SYMBOL(__frontswap_init);
116 116
117static inline void __frontswap_clear(struct swap_info_struct *sis, pgoff_t offset)
118{
119 frontswap_clear(sis, offset);
120 atomic_dec(&sis->frontswap_pages);
121}
122
117/* 123/*
118 * "Store" data from a page to frontswap and associate it with the page's 124 * "Store" data from a page to frontswap and associate it with the page's
119 * swaptype and offset. Page must be locked and in the swap cache. 125 * swaptype and offset. Page must be locked and in the swap cache.
@@ -145,10 +151,8 @@ int __frontswap_store(struct page *page)
145 the (older) page from frontswap 151 the (older) page from frontswap
146 */ 152 */
147 inc_frontswap_failed_stores(); 153 inc_frontswap_failed_stores();
148 if (dup) { 154 if (dup)
149 frontswap_clear(sis, offset); 155 __frontswap_clear(sis, offset);
150 atomic_dec(&sis->frontswap_pages);
151 }
152 } 156 }
153 if (frontswap_writethrough_enabled) 157 if (frontswap_writethrough_enabled)
154 /* report failure so swap also writes to swap device */ 158 /* report failure so swap also writes to swap device */
@@ -191,8 +195,7 @@ void __frontswap_invalidate_page(unsigned type, pgoff_t offset)
191 BUG_ON(sis == NULL); 195 BUG_ON(sis == NULL);
192 if (frontswap_test(sis, offset)) { 196 if (frontswap_test(sis, offset)) {
193 frontswap_ops.invalidate_page(type, offset); 197 frontswap_ops.invalidate_page(type, offset);
194 atomic_dec(&sis->frontswap_pages); 198 __frontswap_clear(sis, offset);
195 frontswap_clear(sis, offset);
196 inc_frontswap_invalidates(); 199 inc_frontswap_invalidates();
197 } 200 }
198} 201}