Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 611edfed authored by Sasha Levin's avatar Sasha Levin Committed by Konrad Rzeszutek Wilk
Browse files

mm: frontswap: split out function to clear a page out

parent f9f08103
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -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();
	}
}