mm: vmscan: set zone flags before blocking
authorMel Gorman <[email protected]>
Wed, 3 Jul 2013 22:02:00 +0000 (15:02 -0700)
committerLinus Torvalds <[email protected]>
Wed, 3 Jul 2013 23:07:29 +0000 (16:07 -0700)
In shrink_page_list a decision may be made to stall and flag a zone as
ZONE_WRITEBACK so that if a large number of unqueued dirty pages are
encountered later then the reclaimer will stall.  Set ZONE_WRITEBACK
before potentially going to sleep so it is noticed sooner.

Signed-off-by: Mel Gorman <[email protected]>
Cc: Johannes Weiner <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Rik van Riel <[email protected]>
Cc: KAMEZAWA Hiroyuki <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Valdis Kletnieks <[email protected]>
Cc: Zlatko Calusic <[email protected]>
Cc: dormando <[email protected]>
Cc: Trond Myklebust <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/vmscan.c

index 5b1a79c8f0cb605d4b965d0307d40f5f23d58a23..5f80d018bffaf162c3f74a933501161e8430e72f 100644 (file)
@@ -1445,8 +1445,8 @@ shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec,
         */
        if (nr_writeback && nr_writeback >=
                        (nr_taken >> (DEF_PRIORITY - sc->priority))) {
-               wait_iff_congested(zone, BLK_RW_ASYNC, HZ/10);
                zone_set_flag(zone, ZONE_WRITEBACK);
+               wait_iff_congested(zone, BLK_RW_ASYNC, HZ/10);
        }
 
        /*