From: Michal Hocko <mhocko@kernel.org>
To: Yang Shi <yang.shi@linux.alibaba.com>
Cc: akpm@linux-foundation.org, vbabka@suse.cz,
mgorman@techsingularity.net, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, Eric Dumazet <edumazet@google.com>,
"David S. Miller" <davem@davemloft.net>,
netdev@vger.kernel.org
Subject: Re: [PATCH] mm: mempolicy: handle vma with unmovable pages mapped correctly in mbind
Date: Wed, 19 Jun 2019 07:21:33 +0200 [thread overview]
Message-ID: <20190619052133.GB2968@dhcp22.suse.cz> (raw)
In-Reply-To: <68c2592d-b747-e6eb-329f-7a428bff1f86@linux.alibaba.com>
On Tue 18-06-19 14:13:16, Yang Shi wrote:
[...]
> > > > > Change migrate_page_add() to check if the page is movable or not, if it
> > > > > is unmovable, just return -EIO. We don't have to check non-LRU movable
> > > > > pages since just zsmalloc and virtio-baloon support this. And, they
> > > > > should be not able to reach here.
> > > > You are not checking whether the page is movable, right? You only rely
> > > > on PageLRU check which is not really an equivalent thing. There are
> > > > movable pages which are not LRU and also pages might be off LRU
> > > > temporarily for many reasons so this could lead to false positives.
> > > I'm supposed non-LRU movable pages could not reach here. Since most of them
> > > are not mmapable, i.e. virtio-balloon, zsmalloc. zram device is mmapable,
> > > but the page fault to that vma would end up allocating user space pages
> > > which are on LRU. If I miss something please let me know.
> > That might be true right now but it is a very subtle assumption that
> > might break easily in the future. The point is still that even LRU pages
> > might be isolated from the LRU list temporarily and you do not want this
> > to cause the failure easily.
>
> I used to have !__PageMovable(page), but it was removed since the
> aforementioned reason. I could add it back.
>
> For the temporary off LRU page, I did a quick search, it looks the most
> paths have to acquire mmap_sem, so it can't race with us here. Page
> reclaim/compaction looks like the only race. But, since the mapping should
> be preserved even though the page is off LRU temporarily unless the page is
> reclaimed, so we should be able to exclude temporary off LRU pages by
> calling page_mapping() and page_anon_vma().
>
> So, the fix may look like:
>
> if (!PageLRU(head) && !__PageMovable(page)) {
> if (!(page_mapping(page) || page_anon_vma(page)))
> return -EIO;
This is getting even more muddy TBH. Is there any reason that we have to
handle this problem during the isolation phase rather the migration?
--
Michal Hocko
SUSE Labs
next prev parent reply other threads:[~2019-06-19 5:21 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-17 18:48 [PATCH] mm: mempolicy: handle vma with unmovable pages mapped correctly in mbind Yang Shi
2019-06-18 13:02 ` Michal Hocko
2019-06-18 17:06 ` Yang Shi
2019-06-18 18:28 ` Michal Hocko
2019-06-18 21:13 ` Yang Shi
2019-06-19 5:21 ` Michal Hocko [this message]
2019-06-19 8:22 ` Vlastimil Babka
2019-06-19 16:21 ` Yang Shi
2019-06-19 18:19 ` Yang Shi
2019-06-20 7:18 ` Vlastimil Babka
2019-06-20 16:08 ` Yang Shi
2019-06-21 11:33 ` Vlastimil Babka
2019-06-21 18:23 ` Yang Shi
2019-06-19 8:18 ` Vlastimil Babka
2019-06-19 16:39 ` Yang Shi
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=20190619052133.GB2968@dhcp22.suse.cz \
--to=mhocko@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=netdev@vger.kernel.org \
--cc=vbabka@suse.cz \
--cc=yang.shi@linux.alibaba.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.