2023-02-15 23:03:46

by SeongJae Park

[permalink] [raw]
Subject: [PATCH v2 1/2] mm/memory_hotplug: return nothing from do_migrate_range()

Return value mechanism of do_migrate_range() is not very simple, while
no caller of the function checks the return value. Make the function
return nothing to be more simple.

Suggested-by: David Hildenbrand <[email protected]>
Signed-off-by: SeongJae Park <[email protected]>
---
mm/memory_hotplug.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index bcb0dc41c2f2..6c615ba1a5c7 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1620,8 +1620,7 @@ static int scan_movable_pages(unsigned long start, unsigned long end,
return 0;
}

-static int
-do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
+static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
{
unsigned long pfn;
struct page *page, *head;
@@ -1721,8 +1720,6 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
putback_movable_pages(&source);
}
}
-
- return ret;
}

static int __init cmdline_parse_movable_node(char *p)
--
2.25.1



2023-02-16 09:48:01

by David Hildenbrand

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] mm/memory_hotplug: return nothing from do_migrate_range()

On 16.02.23 00:02, SeongJae Park wrote:
> Return value mechanism of do_migrate_range() is not very simple, while
> no caller of the function checks the return value. Make the function
> return nothing to be more simple.
>
> Suggested-by: David Hildenbrand <[email protected]>
> Signed-off-by: SeongJae Park <[email protected]>
> ---
> mm/memory_hotplug.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index bcb0dc41c2f2..6c615ba1a5c7 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1620,8 +1620,7 @@ static int scan_movable_pages(unsigned long start, unsigned long end,
> return 0;
> }
>
> -static int
> -do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> +static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> {
> unsigned long pfn;
> struct page *page, *head;
> @@ -1721,8 +1720,6 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> putback_movable_pages(&source);
> }
> }
> -
> - return ret;
> }

I think this patch should also stop initializing ret = 0 inside that
function.

With that

Acked-by: David Hildenbrand <[email protected]>

--
Thanks,

David / dhildenb


2023-02-16 10:53:44

by Baolin Wang

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] mm/memory_hotplug: return nothing from do_migrate_range()



On 2/16/2023 7:02 AM, SeongJae Park wrote:
> Return value mechanism of do_migrate_range() is not very simple, while
> no caller of the function checks the return value. Make the function
> return nothing to be more simple.
>
> Suggested-by: David Hildenbrand <[email protected]>
> Signed-off-by: SeongJae Park <[email protected]>
> ---
> mm/memory_hotplug.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index bcb0dc41c2f2..6c615ba1a5c7 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1620,8 +1620,7 @@ static int scan_movable_pages(unsigned long start, unsigned long end,
> return 0;
> }
>
> -static int
> -do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> +static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> {
> unsigned long pfn;
> struct page *page, *head;
> @@ -1721,8 +1720,6 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> putback_movable_pages(&source);
> }
> }
> -
> - return ret;

Nit: while we are at it, can we also remove the "TODO" comment in
offline_pages()?

ret = scan_movable_pages(pfn, end_pfn, &pfn);
if (!ret) {
/*
* TODO: fatal migration failures should bail
* out
*/
do_migrate_range(pfn, end_pfn);
}

With David's comments:
Reviewed-by: Baolin Wang <[email protected]>

2023-02-16 16:51:14

by SeongJae Park

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] mm/memory_hotplug: return nothing from do_migrate_range()

Hi David,

On Thu, 16 Feb 2023 10:46:59 +0100 David Hildenbrand <[email protected]> wrote:

> On 16.02.23 00:02, SeongJae Park wrote:
> > Return value mechanism of do_migrate_range() is not very simple, while
> > no caller of the function checks the return value. Make the function
> > return nothing to be more simple.
> >
> > Suggested-by: David Hildenbrand <[email protected]>
> > Signed-off-by: SeongJae Park <[email protected]>
> > ---
> > mm/memory_hotplug.c | 5 +----
> > 1 file changed, 1 insertion(+), 4 deletions(-)
> >
> > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> > index bcb0dc41c2f2..6c615ba1a5c7 100644
> > --- a/mm/memory_hotplug.c
> > +++ b/mm/memory_hotplug.c
> > @@ -1620,8 +1620,7 @@ static int scan_movable_pages(unsigned long start, unsigned long end,
> > return 0;
> > }
> >
> > -static int
> > -do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> > +static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> > {
> > unsigned long pfn;
> > struct page *page, *head;
> > @@ -1721,8 +1720,6 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> > putback_movable_pages(&source);
> > }
> > }
> > -
> > - return ret;
> > }
>
> I think this patch should also stop initializing ret = 0 inside that
> function.

The second patch does it, and I read your reply to the patch asking squashing
it in this one. I will send the new version soon.

>
> With that
>
> Acked-by: David Hildenbrand <[email protected]>

Thanks you.


Thanks,
SJ

>
> --
> Thanks,
>
> David / dhildenb
>
>

2023-02-16 16:55:21

by SeongJae Park

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] mm/memory_hotplug: return nothing from do_migrate_range()

Hi Baolin,

On Thu, 16 Feb 2023 18:53:34 +0800 Baolin Wang <[email protected]> wrote:

>
>
> On 2/16/2023 7:02 AM, SeongJae Park wrote:
> > Return value mechanism of do_migrate_range() is not very simple, while
> > no caller of the function checks the return value. Make the function
> > return nothing to be more simple.
> >
> > Suggested-by: David Hildenbrand <[email protected]>
> > Signed-off-by: SeongJae Park <[email protected]>
> > ---
> > mm/memory_hotplug.c | 5 +----
> > 1 file changed, 1 insertion(+), 4 deletions(-)
> >
> > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> > index bcb0dc41c2f2..6c615ba1a5c7 100644
> > --- a/mm/memory_hotplug.c
> > +++ b/mm/memory_hotplug.c
> > @@ -1620,8 +1620,7 @@ static int scan_movable_pages(unsigned long start, unsigned long end,
> > return 0;
> > }
> >
> > -static int
> > -do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> > +static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> > {
> > unsigned long pfn;
> > struct page *page, *head;
> > @@ -1721,8 +1720,6 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
> > putback_movable_pages(&source);
> > }
> > }
> > -
> > - return ret;
>
> Nit: while we are at it, can we also remove the "TODO" comment in
> offline_pages()?
>
> ret = scan_movable_pages(pfn, end_pfn, &pfn);
> if (!ret) {
> /*
> * TODO: fatal migration failures should bail
> * out
> */
> do_migrate_range(pfn, end_pfn);
> }
>
> With David's comments:
> Reviewed-by: Baolin Wang <[email protected]>

As David mentioned we're just still unclear what issues are fatal[1], I was
thinking we didn't forgive the future work, so left the comment. If anyone has
different opinion or I'm getting something wrong, please let me know.

[1] https://lore.kernel.org/linux-mm/[email protected]/


Thanks,
SJ