2024-05-12 17:55:04

by SeongJae Park

[permalink] [raw]
Subject: [RFC PATCH v4 1/5] mm: make alloc_demote_folio externally invokable for migration

From: Honggyu Kim <[email protected]>

The alloc_demote_folio can be used out of vmscan.c so it'd be better to
remove static keyword from it.

This function can also be used for both demotion and promotion so it'd
be better to rename it from alloc_demote_folio to alloc_migrate_folio.

Signed-off-by: Honggyu Kim <[email protected]>
Reviewed-by: SeongJae Park <[email protected]>
Signed-off-by: SeongJae Park <[email protected]>
---
mm/internal.h | 1 +
mm/vmscan.c | 3 +--
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/internal.h b/mm/internal.h
index b2c75b12014e..b3ca996a4efc 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -1052,6 +1052,7 @@ extern unsigned long __must_check vm_mmap_pgoff(struct file *, unsigned long,
unsigned long, unsigned long);

extern void set_pageblock_order(void);
+struct folio *alloc_demote_folio(struct folio *src, unsigned long private);
unsigned long reclaim_pages(struct list_head *folio_list);
unsigned int reclaim_clean_pages_from_list(struct zone *zone,
struct list_head *folio_list);
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 6981a71c8ef0..27269bc2bcc5 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -933,8 +933,7 @@ static void folio_check_dirty_writeback(struct folio *folio,
mapping->a_ops->is_dirty_writeback(folio, dirty, writeback);
}

-static struct folio *alloc_demote_folio(struct folio *src,
- unsigned long private)
+struct folio *alloc_demote_folio(struct folio *src, unsigned long private)
{
struct folio *dst;
nodemask_t *allowed_mask;
--
2.39.2



2024-05-13 12:04:10

by Honggyu Kim

[permalink] [raw]
Subject: Re: [RFC PATCH v4 1/5] mm: make alloc_demote_folio externally invokable for migration

On Sun, 12 May 2024 10:54:43 -0700 SeongJae Park <[email protected]> wrote:
> From: Honggyu Kim <[email protected]>
>
> The alloc_demote_folio can be used out of vmscan.c so it'd be better to
> remove static keyword from it.
>
> This function can also be used for both demotion and promotion so it'd
> be better to rename it from alloc_demote_folio to alloc_migrate_folio.

This description doesn't match with the changes below.

> Signed-off-by: Honggyu Kim <[email protected]>
> Reviewed-by: SeongJae Park <[email protected]>
> Signed-off-by: SeongJae Park <[email protected]>
> ---
> mm/internal.h | 1 +
> mm/vmscan.c | 3 +--
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/mm/internal.h b/mm/internal.h
> index b2c75b12014e..b3ca996a4efc 100644
> --- a/mm/internal.h
> +++ b/mm/internal.h
> @@ -1052,6 +1052,7 @@ extern unsigned long __must_check vm_mmap_pgoff(struct file *, unsigned long,
> unsigned long, unsigned long);
>
> extern void set_pageblock_order(void);
> +struct folio *alloc_demote_folio(struct folio *src, unsigned long private);

I still prefer to rename it to alloc_migrate_folio.

> unsigned long reclaim_pages(struct list_head *folio_list);
> unsigned int reclaim_clean_pages_from_list(struct zone *zone,
> struct list_head *folio_list);
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 6981a71c8ef0..27269bc2bcc5 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -933,8 +933,7 @@ static void folio_check_dirty_writeback(struct folio *folio,
> mapping->a_ops->is_dirty_writeback(folio, dirty, writeback);
> }
>
> -static struct folio *alloc_demote_folio(struct folio *src,
> - unsigned long private)
> +struct folio *alloc_demote_folio(struct folio *src, unsigned long private)

Here as well.

> {
> struct folio *dst;
> nodemask_t *allowed_mask;
> --
> 2.39.2
>

Thanks,
Honggyu

2024-05-15 16:11:29

by SeongJae Park

[permalink] [raw]
Subject: Re: [RFC PATCH v4 1/5] mm: make alloc_demote_folio externally invokable for migration

On Mon, 13 May 2024 21:03:56 +0900 Honggyu Kim <[email protected]> wrote:

> On Sun, 12 May 2024 10:54:43 -0700 SeongJae Park <[email protected]> wrote:
> > From: Honggyu Kim <[email protected]>
> >
> > The alloc_demote_folio can be used out of vmscan.c so it'd be better to
> > remove static keyword from it.
> >
> > This function can also be used for both demotion and promotion so it'd
> > be better to rename it from alloc_demote_folio to alloc_migrate_folio.
>
> This description doesn't match with the changes below.

You're right. Thank you for checking this.

>
> > Signed-off-by: Honggyu Kim <[email protected]>
> > Reviewed-by: SeongJae Park <[email protected]>
> > Signed-off-by: SeongJae Park <[email protected]>
> > ---
> > mm/internal.h | 1 +
> > mm/vmscan.c | 3 +--
> > 2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/mm/internal.h b/mm/internal.h
> > index b2c75b12014e..b3ca996a4efc 100644
> > --- a/mm/internal.h
> > +++ b/mm/internal.h
> > @@ -1052,6 +1052,7 @@ extern unsigned long __must_check vm_mmap_pgoff(struct file *, unsigned long,
> > unsigned long, unsigned long);
> >
> > extern void set_pageblock_order(void);
> > +struct folio *alloc_demote_folio(struct folio *src, unsigned long private);
>
> I still prefer to rename it to alloc_migrate_folio.

And I still have no objection at renaming. I didn't make the change here not
because I want the change removed, but just because I wrote this RFC v4 in hope
of seeing how minimum this patchset can be while addressing my comments.
Please feel free to add the change back on the next revision of this patch if
you write. Maybe keeping this patchset without the renaming change, and
discussing the renaming with a separate patch is also an option in my opinion.

>
> > unsigned long reclaim_pages(struct list_head *folio_list);
> > unsigned int reclaim_clean_pages_from_list(struct zone *zone,
> > struct list_head *folio_list);
> > diff --git a/mm/vmscan.c b/mm/vmscan.c
> > index 6981a71c8ef0..27269bc2bcc5 100644
> > --- a/mm/vmscan.c
> > +++ b/mm/vmscan.c
> > @@ -933,8 +933,7 @@ static void folio_check_dirty_writeback(struct folio *folio,
> > mapping->a_ops->is_dirty_writeback(folio, dirty, writeback);
> > }
> >
> > -static struct folio *alloc_demote_folio(struct folio *src,
> > - unsigned long private)
> > +struct folio *alloc_demote_folio(struct folio *src, unsigned long private)
>
> Here as well.

Ditto.

>
> > {
> > struct folio *dst;
> > nodemask_t *allowed_mask;
> > --
> > 2.39.2
> >
>
> Thanks,
> Honggyu


Thanks,
SJ