[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20211115202146.473fff2404d7fb200dd48bd3@linux-foundation.org>
Date: Mon, 15 Nov 2021 20:21:46 -0800
From: Andrew Morton <akpm@...ux-foundation.org>
To: Baolin Wang <baolin.wang@...ux.alibaba.com>
Cc: ziy@...dia.com, shy828301@...il.com, linux-mm@...ck.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/3] mm: migrate: Correct the hugetlb migration stats
On Sun, 7 Nov 2021 16:57:26 +0800 Baolin Wang <baolin.wang@...ux.alibaba.com> wrote:
> Correct the migration stats for hugetlb with using compound_nr() instead
> of thp_nr_pages(),
It would be helpful to explain why using thp_nr_pages() was wrong.
And to explain the end user visible effects of this bug so we can
decide whether -stable backporting is desirable.
> meanwhile change 'nr_failed_pages' to record the
> number of normal pages failed to migrate, including THP and hugetlb,
> and 'nr_succeeded' will record the number of normal pages migrated
> successfully.
>
> Reviewed-by: Zi Yan <ziy@...dia.com>
> Signed-off-by: Baolin Wang <baolin.wang@...ux.alibaba.com>
> ---
> mm/migrate.c | 17 ++++++++---------
> 1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/mm/migrate.c b/mm/migrate.c
> index 9aafdab..756190b 100644
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -1436,9 +1436,9 @@ static inline int try_split_thp(struct page *page, struct page **page2,
> * It is caller's responsibility to call putback_movable_pages() to return pages
> * to the LRU or free list only if ret != 0.
> *
> - * Returns the number of {normal page, THP} that were not migrated, or an error code.
> - * The number of THP splits will be considered as the number of non-migrated THP,
> - * no matter how many subpages of the THP are migrated successfully.
> + * Returns the number of {normal page, THP, hugetlb} that were not migrated, or
This is a bit confusing.
If migrate_pages() failed to migrate one 4k pages then it returns 1,
yes?
But if migrate_pages() fails to migrate one 2MB hugepage then will it
return 1 or will it return 512?
And how can the caller actually _use_ this return value without knowing
the above information?
In other words, perhaps this function should simply return pass/fail?
Powered by blists - more mailing lists