@@ -1293,9 +1293,7 @@ void end_page_writeback(struct page *page)
rotate_reclaimable_page(page);
}
- if (!test_clear_page_writeback(page))
- BUG();
-
+ test_clear_page_writeback(page);
smp_mb__after_atomic();
wake_up_page(page, PG_writeback);
}
@@ -2718,6 +2718,11 @@ int test_clear_page_writeback(struct page *page)
struct lruvec *lruvec;
int ret;
+ if (WARN_ON(!PageWriteback(page))) {
+ dump_page(page, "!writeback");
+ return false;
+ }
+
memcg = lock_page_memcg(page);
lruvec = mem_cgroup_page_lruvec(page, page_pgdat(page));
if (mapping && mapping_use_writeback_tags(mapping)) {