|
@@ -140,16 +140,16 @@ int __frontswap_store(struct page *page)
|
|
|
inc_frontswap_succ_stores();
|
|
|
if (!dup)
|
|
|
atomic_inc(&sis->frontswap_pages);
|
|
|
- } else if (dup) {
|
|
|
+ } else {
|
|
|
/*
|
|
|
failed dup always results in automatic invalidate of
|
|
|
the (older) page from frontswap
|
|
|
*/
|
|
|
- frontswap_clear(sis, offset);
|
|
|
- atomic_dec(&sis->frontswap_pages);
|
|
|
- inc_frontswap_failed_stores();
|
|
|
- } else {
|
|
|
inc_frontswap_failed_stores();
|
|
|
+ if (dup) {
|
|
|
+ frontswap_clear(sis, offset);
|
|
|
+ atomic_dec(&sis->frontswap_pages);
|
|
|
+ }
|
|
|
}
|
|
|
if (frontswap_writethrough_enabled)
|
|
|
/* report failure so swap also writes to swap device */
|