lkml.org 
[lkml]   [2011]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 01/14] mm: Serialize access to min_free_kbytes
    Date
    There is a race between the min_free_kbytes sysctl, memory hotplug
    and transparent hugepage support enablement. Memory hotplug uses a
    zonelists_mutex to avoid a race when building zonelists. Reuse it to
    serialise watermark updates.

    [a.p.zijlstra@chello.nl: Older patch fixed the race with spinlock]
    Signed-off-by: Mel Gorman <mgorman@suse.de>
    ---
    mm/page_alloc.c | 23 +++++++++++++++--------
    1 files changed, 15 insertions(+), 8 deletions(-)
    diff --git a/mm/page_alloc.c b/mm/page_alloc.c
    index 4e8985a..a327a72 100644
    --- a/mm/page_alloc.c
    +++ b/mm/page_alloc.c
    @@ -5045,14 +5045,7 @@ static void setup_per_zone_lowmem_reserve(void)
    calculate_totalreserve_pages();
    }

    -/**
    - * setup_per_zone_wmarks - called when min_free_kbytes changes
    - * or when memory is hot-{added|removed}
    - *
    - * Ensures that the watermark[min,low,high] values for each zone are set
    - * correctly with respect to min_free_kbytes.
    - */
    -void setup_per_zone_wmarks(void)
    +static void __setup_per_zone_wmarks(void)
    {
    unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10);
    unsigned long lowmem_pages = 0;
    @@ -5107,6 +5100,20 @@ void setup_per_zone_wmarks(void)
    calculate_totalreserve_pages();
    }

    +/**
    + * setup_per_zone_wmarks - called when min_free_kbytes changes
    + * or when memory is hot-{added|removed}
    + *
    + * Ensures that the watermark[min,low,high] values for each zone are set
    + * correctly with respect to min_free_kbytes.
    + */
    +void setup_per_zone_wmarks(void)
    +{
    + mutex_lock(&zonelists_mutex);
    + __setup_per_zone_wmarks();
    + mutex_unlock(&zonelists_mutex);
    +}
    +
    /*
    * The inactive anon list should be small enough that the VM never has to
    * do too much work, but large enough that each inactive page has a chance
    --
    1.7.3.4


    \
     
     \ /
      Last update: 2011-06-20 15:15    [from the cache]
    ©2003-2011 Jasper Spaans