From: Wei Yang <richardw.yang@linux.intel.com>
To: Yang Shi <yang.shi@linux.alibaba.com>
Cc: mhocko@suse.com, richardw.yang@linux.intel.com,
akpm@linux-foundation.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [v2 PATCH] mm: move_pages: report the number of non-attempted pages
Date: Fri, 24 Jan 2020 06:59:40 +0800 [thread overview]
Message-ID: <20200123225940.GC29851@richard> (raw)
In-Reply-To: <1579736331-85494-1-git-send-email-yang.shi@linux.alibaba.com>
On Thu, Jan 23, 2020 at 07:38:51AM +0800, Yang Shi wrote:
>Since commit a49bd4d71637 ("mm, numa: rework do_pages_move"),
>the semantic of move_pages() was changed to return the number of
>non-migrated pages (failed to migration) and the call would be aborted
>immediately if migrate_pages() returns positive value. But it didn't
>report the number of pages that we even haven't attempted to migrate.
>So, fix it by including non-attempted pages in the return value.
>
>Fixes: a49bd4d71637 ("mm, numa: rework do_pages_move")
>Suggested-by: Michal Hocko <mhocko@suse.com>
>Cc: Wei Yang <richardw.yang@linux.intel.com>
>Cc: <stable@vger.kernel.org> [4.17+]
>Signed-off-by: Yang Shi <yang.shi@linux.alibaba.com>
>---
>v2: Rebased on top of the latest mainline kernel per Andrew
>
> mm/migrate.c | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
>diff --git a/mm/migrate.c b/mm/migrate.c
>index 86873b6..9b8eb5d 100644
>--- a/mm/migrate.c
>+++ b/mm/migrate.c
>@@ -1627,8 +1627,18 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes,
> start = i;
> } else if (node != current_node) {
> err = do_move_pages_to_node(mm, &pagelist, current_node);
>- if (err)
>+ if (err) {
>+ /*
>+ * Positive err means the number of failed
>+ * pages to migrate. Since we are going to
>+ * abort and return the number of non-migrated
>+ * pages, so need incude the rest of the
>+ * nr_pages that have not attempted as well.
>+ */
>+ if (err > 0)
>+ err += nr_pages - i - 1;
> goto out;
>+ }
> err = store_status(status, start, current_node, i - start);
> if (err)
> goto out;
>@@ -1659,8 +1669,11 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes,
> goto out_flush;
>
> err = do_move_pages_to_node(mm, &pagelist, current_node);
>- if (err)
>+ if (err) {
>+ if (err > 0)
>+ err += nr_pages - i - 1;
> goto out;
>+ }
> if (i > start) {
> err = store_status(status, start, current_node, i - start);
> if (err)
>@@ -1674,6 +1687,13 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes,
>
> /* Make sure we do not overwrite the existing error */
> err1 = do_move_pages_to_node(mm, &pagelist, current_node);
>+ /*
>+ * Don't have to report non-attempted pages here since:
In previous comment, you use "non-migrated". Here is "non-attempted". What's
the difference?
>+ * - If the above loop is done gracefully there is not non-attempted
>+ * page.
>+ * - If the above loop is aborted to it means more fatal error
>+ * happened, should return err.
>+ */
> if (!err1)
> err1 = store_status(status, start, current_node, i - start);
> if (!err)
>--
>1.8.3.1
--
Wei Yang
Help you, Help me
next prev parent reply other threads:[~2020-01-23 23:00 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-22 23:38 [v2 PATCH] mm: move_pages: report the number of non-attempted pages Yang Shi
2020-01-23 3:27 ` Wei Yang
2020-01-23 3:56 ` Yang Shi
2020-01-23 22:40 ` Wei Yang
2020-01-23 8:55 ` Michal Hocko
2020-01-23 22:56 ` Wei Yang
2020-01-24 6:46 ` Michal Hocko
2020-01-24 15:26 ` Wei Yang
2020-01-24 15:26 ` Wei Yang
2020-01-24 15:40 ` Michal Hocko
2020-01-24 23:19 ` Wei Yang
2020-01-24 17:48 ` Yang Shi
2020-01-24 23:20 ` Wei Yang
2020-01-23 22:59 ` Wei Yang [this message]
2020-01-23 23:36 ` Yang Shi
2020-01-23 23:44 ` Wei Yang
2020-01-27 9:55 ` Michal Hocko
2020-01-27 16:34 ` 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=20200123225940.GC29851@richard \
--to=richardw.yang@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=stable@vger.kernel.org \
--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.