[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHbLzkppnNBXVkQ-eZx1=USaaKJWE-dd3_SkFk+y9vkMsm0oMQ@mail.gmail.com>
Date: Fri, 18 Oct 2019 14:02:54 -0700
From: Yang Shi <shy828301@...il.com>
To: Dave Hansen <dave.hansen@...el.com>
Cc: Dave Hansen <dave.hansen@...ux.intel.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linux MM <linux-mm@...ck.org>,
Dan Williams <dan.j.williams@...el.com>,
Keith Busch <keith.busch@...el.com>
Subject: Re: [PATCH 3/4] mm/vmscan: Attempt to migrate page in lieu of discard
On Fri, Oct 18, 2019 at 11:15 AM Dave Hansen <dave.hansen@...el.com> wrote:
>
> On 10/17/19 10:30 AM, Yang Shi wrote:
> >> + if (!PageHuge(page)) {
> >> + int rc = migrate_demote_mapping(page);
> >> +
> >> + /*
> >> + * -ENOMEM on a THP may indicate either migration is
> >> + * unsupported or there was not enough contiguous
> >> + * space. Split the THP into base pages and retry the
> >> + * head immediately. The tail pages will be considered
> >> + * individually within the current loop's page list.
> >> + */
> >> + if (rc == -ENOMEM && PageTransHuge(page) &&
> >> + !split_huge_page_to_list(page, page_list))
> >> + rc = migrate_demote_mapping(page);
> > I recalled when Keith posted the patch at the first time, I raised
> > question about why not just migrating THP in a whole? The
> > migrate_pages() could handle this. If it fails, it just fallbacks to
> > base page.
>
> There's a pair of migrate_demote_mapping()s in there. I expected that
> the first will migrate the whole THP and the second plus the split is
> only used if fails the whole migration.
Ah, that's right. I mis-read the first migrate_demote_mapping(). But,
why calling migrate_demote_mapping() twice for THP and base page (if
THP is failed) instead of calling migrate_pages() that does deal with
all the cases.
>
> Am I reading it wrong?
Powered by blists - more mailing lists