diff options
author | Sasha Levin <levinsasha928@gmail.com> | 2012-06-10 06:51:07 -0400 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-07-19 18:51:14 -0400 |
commit | 611edfed29f406eedf66030e0864b7d3fec23f21 (patch) | |
tree | 1143bbfb5cfce7a395a41af4f0bc0acbcd185e7c /mm/frontswap.c | |
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>
Diffstat (limited to 'mm/frontswap.c')
-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) | |||
114 | } | 114 | } |
115 | EXPORT_SYMBOL(__frontswap_init); | 115 | EXPORT_SYMBOL(__frontswap_init); |
116 | 116 | ||
117 | static 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 | } |