lkml.org 
[lkml]   [2014]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/5] mm: differentiate unmap for vmscan from other unmap.
    Date
    From: Jérôme Glisse <jglisse@redhat.com>

    New code will need to be able to differentiate between a regular unmap and
    an unmap trigger by vmscan in which case we want to be as quick as possible.

    Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
    ---
    include/linux/rmap.h | 15 ++++++++-------
    mm/memory-failure.c | 2 +-
    mm/vmscan.c | 4 ++--
    3 files changed, 11 insertions(+), 10 deletions(-)

    diff --git a/include/linux/rmap.h b/include/linux/rmap.h
    index be57450..eddbc07 100644
    --- a/include/linux/rmap.h
    +++ b/include/linux/rmap.h
    @@ -72,13 +72,14 @@ struct anon_vma_chain {
    };

    enum ttu_flags {
    - TTU_UNMAP = 1, /* unmap mode */
    - TTU_MIGRATION = 2, /* migration mode */
    - TTU_MUNLOCK = 4, /* munlock mode */
    -
    - TTU_IGNORE_MLOCK = (1 << 8), /* ignore mlock */
    - TTU_IGNORE_ACCESS = (1 << 9), /* don't age */
    - TTU_IGNORE_HWPOISON = (1 << 10),/* corrupted page is recoverable */
    + TTU_VMSCAN = 1, /* unmap for vmscan */
    + TTU_POISON = 2, /* unmap for poison */
    + TTU_MIGRATION = 4, /* migration mode */
    + TTU_MUNLOCK = 8, /* munlock mode */
    +
    + TTU_IGNORE_MLOCK = (1 << 9), /* ignore mlock */
    + TTU_IGNORE_ACCESS = (1 << 10), /* don't age */
    + TTU_IGNORE_HWPOISON = (1 << 11),/* corrupted page is recoverable */
    };

    #ifdef CONFIG_MMU
    diff --git a/mm/memory-failure.c b/mm/memory-failure.c
    index cd8989c..e264b5f 100644
    --- a/mm/memory-failure.c
    +++ b/mm/memory-failure.c
    @@ -887,7 +887,7 @@ static int page_action(struct page_state *ps, struct page *p,
    static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
    int trapno, int flags, struct page **hpagep)
    {
    - enum ttu_flags ttu = TTU_UNMAP | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
    + enum ttu_flags ttu = TTU_POISON | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
    struct address_space *mapping;
    LIST_HEAD(tokill);
    int ret;
    diff --git a/mm/vmscan.c b/mm/vmscan.c
    index 0f16ffe..11633c1 100644
    --- a/mm/vmscan.c
    +++ b/mm/vmscan.c
    @@ -1161,7 +1161,7 @@ unsigned long reclaim_clean_pages_from_list(struct zone *zone,
    }

    ret = shrink_page_list(&clean_pages, zone, &sc,
    - TTU_UNMAP|TTU_IGNORE_ACCESS,
    + TTU_VMSCAN|TTU_IGNORE_ACCESS,
    &dummy1, &dummy2, &dummy3, &dummy4, &dummy5, true);
    list_splice(&clean_pages, page_list);
    mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret);
    @@ -1514,7 +1514,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec,
    if (nr_taken == 0)
    return 0;

    - nr_reclaimed = shrink_page_list(&page_list, zone, sc, TTU_UNMAP,
    + nr_reclaimed = shrink_page_list(&page_list, zone, sc, TTU_VMSCAN,
    &nr_dirty, &nr_unqueued_dirty, &nr_congested,
    &nr_writeback, &nr_immediate,
    false);
    --
    1.9.0
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2014-06-14 03:41    [W:2.265 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site