lkml.org 
[lkml]   [2016]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 20/27] mm, vmscan: Update classzone_idx if buffer_heads_over_limit
    Date
    If buffer heads are over the limit then the direct reclaim gfp_mask
    is promoted to __GFP_HIGHMEM so that lowmem is indirectly freed. With
    node-based reclaim, it is also required that the classzone_idx be updated
    or the pages will be skipped.

    Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
    ---
    mm/vmscan.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/mm/vmscan.c b/mm/vmscan.c
    index 3edf941e9965..7a2d69612231 100644
    --- a/mm/vmscan.c
    +++ b/mm/vmscan.c
    @@ -2547,8 +2547,10 @@ static void shrink_zones(struct zonelist *zonelist, struct scan_control *sc,
    * highmem pages could be pinning lowmem pages storing buffer_heads
    */
    orig_mask = sc->gfp_mask;
    - if (buffer_heads_over_limit)
    + if (buffer_heads_over_limit) {
    sc->gfp_mask |= __GFP_HIGHMEM;
    + classzone_idx = gfp_zone(sc->gfp_mask);
    + }

    for_each_zone_zonelist_nodemask(zone, z, zonelist,
    gfp_zone(sc->gfp_mask), sc->nodemask) {
    --
    2.6.4
    \
     
     \ /
      Last update: 2016-06-09 21:01    [W:4.043 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site