|
@@ -866,7 +866,15 @@ static unsigned long shrink_page_list(struct list_head *page_list,
|
|
|
*/
|
|
|
if (page_is_file_cache(page) &&
|
|
|
(!current_is_kswapd() || priority >= DEF_PRIORITY - 2)) {
|
|
|
- inc_zone_page_state(page, NR_VMSCAN_WRITE_SKIP);
|
|
|
+ /*
|
|
|
+ * Immediately reclaim when written back.
|
|
|
+ * Similar in principal to deactivate_page()
|
|
|
+ * except we already have the page isolated
|
|
|
+ * and know it's dirty
|
|
|
+ */
|
|
|
+ inc_zone_page_state(page, NR_VMSCAN_IMMEDIATE);
|
|
|
+ SetPageReclaim(page);
|
|
|
+
|
|
|
goto keep_locked;
|
|
|
}
|
|
|
|