From: Michal Hocko <mhocko@kernel.org>
To: Shaohua Li <shli@fb.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Kernel-team@fb.com, minchan@kernel.org, hughd@google.com,
hannes@cmpxchg.org, riel@redhat.com, mgorman@techsingularity.net,
akpm@linux-foundation.org
Subject: Re: [PATCH V5 1/6] mm: delete unnecessary TTU_* flags
Date: Mon, 27 Feb 2017 14:48:52 +0100 [thread overview]
Message-ID: <20170227134851.GD26504@dhcp22.suse.cz> (raw)
In-Reply-To: <4be3ea1bc56b26fd98a54d0a6f70bec63f6d8980.1487965799.git.shli@fb.com>
On Fri 24-02-17 13:31:44, Shaohua Li wrote:
> Johannes pointed out TTU_LZFREE is unnecessary. It's true because we
> always have the flag set if we want to do an unmap. For cases we don't
> do an unmap, the TTU_LZFREE part of code should never run.
>
> Also the TTU_UNMAP is unnecessary. If no other flags set (for
> example, TTU_MIGRATION), an unmap is implied.
>
> The patch includes Johannes's cleanup and dead TTU_ACTION macro removal
> code
>
> Cc: Michal Hocko <mhocko@suse.com>
> Cc: Hugh Dickins <hughd@google.com>
> Cc: Rik van Riel <riel@redhat.com>
> Cc: Mel Gorman <mgorman@techsingularity.net>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Suggested-by: Johannes Weiner <hannes@cmpxchg.org>
> Acked-by: Johannes Weiner <hannes@cmpxchg.org>
> Acked-by: Minchan Kim <minchan@kernel.org>
> Acked-by: Hillf Danton <hillf.zj@alibaba-inc.com>
> Signed-off-by: Shaohua Li <shli@fb.com>
Acked-by: Michal Hocko <mhocko@suse.com>
> ---
> include/linux/rmap.h | 22 +++++++++-------------
> mm/memory-failure.c | 2 +-
> mm/rmap.c | 2 +-
> mm/vmscan.c | 11 ++++-------
> 4 files changed, 15 insertions(+), 22 deletions(-)
>
> diff --git a/include/linux/rmap.h b/include/linux/rmap.h
> index 8c89e90..7a39414 100644
> --- a/include/linux/rmap.h
> +++ b/include/linux/rmap.h
> @@ -83,19 +83,17 @@ struct anon_vma_chain {
> };
>
> enum ttu_flags {
> - TTU_UNMAP = 1, /* unmap mode */
> - TTU_MIGRATION = 2, /* migration mode */
> - TTU_MUNLOCK = 4, /* munlock mode */
> - TTU_LZFREE = 8, /* lazy free mode */
> - TTU_SPLIT_HUGE_PMD = 16, /* split huge PMD if any */
> -
> - 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_BATCH_FLUSH = (1 << 11), /* Batch TLB flushes where possible
> + TTU_MIGRATION = 0x1, /* migration mode */
> + TTU_MUNLOCK = 0x2, /* munlock mode */
> +
> + TTU_SPLIT_HUGE_PMD = 0x4, /* split huge PMD if any */
> + TTU_IGNORE_MLOCK = 0x8, /* ignore mlock */
> + TTU_IGNORE_ACCESS = 0x10, /* don't age */
> + TTU_IGNORE_HWPOISON = 0x20, /* corrupted page is recoverable */
> + TTU_BATCH_FLUSH = 0x40, /* Batch TLB flushes where possible
> * and caller guarantees they will
> * do a final flush if necessary */
> - TTU_RMAP_LOCKED = (1 << 12) /* do not grab rmap lock:
> + TTU_RMAP_LOCKED = 0x80 /* do not grab rmap lock:
> * caller holds it */
> };
>
> @@ -193,8 +191,6 @@ static inline void page_dup_rmap(struct page *page, bool compound)
> int page_referenced(struct page *, int is_locked,
> struct mem_cgroup *memcg, unsigned long *vm_flags);
>
> -#define TTU_ACTION(x) ((x) & TTU_ACTION_MASK)
> -
> int try_to_unmap(struct page *, enum ttu_flags flags);
>
> /* Avoid racy checks */
> diff --git a/mm/memory-failure.c b/mm/memory-failure.c
> index 3d0f2fd..b78d080 100644
> --- a/mm/memory-failure.c
> +++ b/mm/memory-failure.c
> @@ -906,7 +906,7 @@ EXPORT_SYMBOL_GPL(get_hwpoison_page);
> 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_IGNORE_MLOCK | TTU_IGNORE_ACCESS;
> struct address_space *mapping;
> LIST_HEAD(tokill);
> int ret;
> diff --git a/mm/rmap.c b/mm/rmap.c
> index 8774791..96eb85c 100644
> --- a/mm/rmap.c
> +++ b/mm/rmap.c
> @@ -1418,7 +1418,7 @@ static int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
> */
> VM_BUG_ON_PAGE(!PageSwapCache(page), page);
>
> - if (!PageDirty(page) && (flags & TTU_LZFREE)) {
> + if (!PageDirty(page)) {
> /* It's a freeable page by MADV_FREE */
> dec_mm_counter(mm, MM_ANONPAGES);
> rp->lazyfreed++;
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 26c3b40..68ea50d 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -971,7 +971,6 @@ static unsigned long shrink_page_list(struct list_head *page_list,
> int may_enter_fs;
> enum page_references references = PAGEREF_RECLAIM_CLEAN;
> bool dirty, writeback;
> - bool lazyfree = false;
> int ret = SWAP_SUCCESS;
>
> cond_resched();
> @@ -1125,7 +1124,6 @@ static unsigned long shrink_page_list(struct list_head *page_list,
> goto keep_locked;
> if (!add_to_swap(page, page_list))
> goto activate_locked;
> - lazyfree = true;
> may_enter_fs = 1;
>
> /* Adding to swap updated mapping */
> @@ -1143,9 +1141,8 @@ static unsigned long shrink_page_list(struct list_head *page_list,
> * processes. Try to unmap it here.
> */
> if (page_mapped(page) && mapping) {
> - switch (ret = try_to_unmap(page, lazyfree ?
> - (ttu_flags | TTU_BATCH_FLUSH | TTU_LZFREE) :
> - (ttu_flags | TTU_BATCH_FLUSH))) {
> + switch (ret = try_to_unmap(page,
> + ttu_flags | TTU_BATCH_FLUSH)) {
> case SWAP_FAIL:
> nr_unmap_fail++;
> goto activate_locked;
> @@ -1353,7 +1350,7 @@ unsigned long reclaim_clean_pages_from_list(struct zone *zone,
> }
>
> ret = shrink_page_list(&clean_pages, zone->zone_pgdat, &sc,
> - TTU_UNMAP|TTU_IGNORE_ACCESS, NULL, true);
> + TTU_IGNORE_ACCESS, NULL, true);
> list_splice(&clean_pages, page_list);
> mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_FILE, -ret);
> return ret;
> @@ -1760,7 +1757,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, pgdat, sc, TTU_UNMAP,
> + nr_reclaimed = shrink_page_list(&page_list, pgdat, sc, 0,
> &stat, false);
>
> spin_lock_irq(&pgdat->lru_lock);
> --
> 2.9.3
>
--
Michal Hocko
SUSE Labs
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-02-27 13:48 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-24 21:31 [PATCH V5 0/6] mm: fix some MADV_FREE issues Shaohua Li
2017-02-24 21:31 ` [PATCH V5 1/6] mm: delete unnecessary TTU_* flags Shaohua Li
2017-02-27 13:48 ` Michal Hocko [this message]
2017-02-24 21:31 ` [PATCH V5 2/6] mm: don't assume anonymous pages have SwapBacked flag Shaohua Li
2017-02-27 6:48 ` Hillf Danton
2017-02-27 14:35 ` Michal Hocko
2017-02-27 16:10 ` Shaohua Li
2017-02-27 16:28 ` Michal Hocko
2017-02-24 21:31 ` [PATCH V5 3/6] mm: move MADV_FREE pages into LRU_INACTIVE_FILE list Shaohua Li
2017-02-27 6:28 ` Minchan Kim
2017-02-27 16:13 ` Shaohua Li
2017-02-27 16:30 ` Michal Hocko
2017-02-28 2:53 ` Minchan Kim
2017-02-27 14:53 ` Michal Hocko
2017-02-27 17:15 ` Johannes Weiner
2017-02-28 3:19 ` Hillf Danton
2017-02-24 21:31 ` [PATCH V5 4/6] mm: reclaim MADV_FREE pages Shaohua Li
2017-02-27 6:33 ` Minchan Kim
2017-02-27 16:19 ` Shaohua Li
2017-02-27 16:32 ` Michal Hocko
2017-02-28 5:02 ` Minchan Kim
2017-02-27 15:05 ` Michal Hocko
2017-02-27 17:21 ` Johannes Weiner
2017-02-28 3:21 ` Hillf Danton
2017-02-24 21:31 ` [PATCH V5 5/6] mm: enable MADV_FREE for swapless system Shaohua Li
2017-02-27 15:06 ` Michal Hocko
2017-02-28 3:22 ` Hillf Danton
2017-02-28 5:02 ` Minchan Kim
2017-02-24 21:31 ` [PATCH V5 6/6] proc: show MADV_FREE pages info in smaps Shaohua Li
2017-02-27 15:06 ` Michal Hocko
2017-02-28 3:23 ` Hillf Danton
2017-03-01 13:36 ` Michal Hocko
2017-03-01 17:37 ` Shaohua Li
2017-03-01 17:49 ` Michal Hocko
2017-03-01 18:18 ` Shaohua Li
2017-03-01 18:31 ` Johannes Weiner
2017-03-01 18:57 ` Michal Hocko
2017-03-02 7:39 ` Minchan Kim
2017-03-02 14:01 ` Johannes Weiner
2017-03-02 16:30 ` Michal Hocko
2017-03-04 0:10 ` Andrew Morton
2017-03-07 10:05 ` Michal Hocko
2017-03-07 22:43 ` Andrew Morton
2017-03-08 5:36 ` Minchan Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170227134851.GD26504@dhcp22.suse.cz \
--to=mhocko@kernel.org \
--cc=Kernel-team@fb.com \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=minchan@kernel.org \
--cc=riel@redhat.com \
--cc=shli@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).