diff options
| -rw-r--r-- | mm/vmscan.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 71f23c0c1090..e01ded365440 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
| @@ -1573,20 +1573,18 @@ shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec, | |||
| 1573 | * If dirty pages are scanned that are not queued for IO, it | 1573 | * If dirty pages are scanned that are not queued for IO, it |
| 1574 | * implies that flushers are not keeping up. In this case, flag | 1574 | * implies that flushers are not keeping up. In this case, flag |
| 1575 | * the zone ZONE_TAIL_LRU_DIRTY and kswapd will start writing | 1575 | * the zone ZONE_TAIL_LRU_DIRTY and kswapd will start writing |
| 1576 | * pages from reclaim context. It will forcibly stall in the | 1576 | * pages from reclaim context. |
| 1577 | * next check. | ||
| 1578 | */ | 1577 | */ |
| 1579 | if (nr_unqueued_dirty == nr_taken) | 1578 | if (nr_unqueued_dirty == nr_taken) |
| 1580 | zone_set_flag(zone, ZONE_TAIL_LRU_DIRTY); | 1579 | zone_set_flag(zone, ZONE_TAIL_LRU_DIRTY); |
| 1581 | 1580 | ||
| 1582 | /* | 1581 | /* |
| 1583 | * In addition, if kswapd scans pages marked marked for | 1582 | * If kswapd scans pages marked marked for immediate |
| 1584 | * immediate reclaim and under writeback (nr_immediate), it | 1583 | * reclaim and under writeback (nr_immediate), it implies |
| 1585 | * implies that pages are cycling through the LRU faster than | 1584 | * that pages are cycling through the LRU faster than |
| 1586 | * they are written so also forcibly stall. | 1585 | * they are written so also forcibly stall. |
| 1587 | */ | 1586 | */ |
| 1588 | if ((nr_unqueued_dirty == nr_taken || nr_immediate) && | 1587 | if (nr_immediate && current_may_throttle()) |
| 1589 | current_may_throttle()) | ||
| 1590 | congestion_wait(BLK_RW_ASYNC, HZ/10); | 1588 | congestion_wait(BLK_RW_ASYNC, HZ/10); |
| 1591 | } | 1589 | } |
| 1592 | 1590 | ||
