]> Pileus Git - ~andy/linux/commitdiff
mm: frontswap: split out function to clear a page out
authorSasha Levin <levinsasha928@gmail.com>
Sun, 10 Jun 2012 10:51:07 +0000 (12:51 +0200)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Thu, 19 Jul 2012 22:51:14 +0000 (18:51 -0400)
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
mm/frontswap.c

index 7c26e899cec9badb4d957be0f7be19eb3a98c6e1..7fb9538bec23c0c3098be0aef8fa1f4053fe8d11 100644 (file)
@@ -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();
        }
 }