mm: move get_page_from_free_area() to mm/page_alloc.c

Message ID 20230319114214.2133332-1-rppt@kernel.org
State New
Headers
Series mm: move get_page_from_free_area() to mm/page_alloc.c |

Commit Message

Mike Rapoport March 19, 2023, 11:42 a.m. UTC
  From: "Mike Rapoport (IBM)" <rppt@kernel.org>

The get_page_from_free_area() helper is only used in mm/page_alloc.c so
move it there to reduce noise in include/linux/mmzone.h

Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
---
 include/linux/mmzone.h | 7 -------
 mm/page_alloc.c        | 7 +++++++
 2 files changed, 7 insertions(+), 7 deletions(-)


base-commit: 4018ab1f7cec061b8425737328edefebdc0ab832
  

Comments

Lorenzo Stoakes March 19, 2023, 12:07 p.m. UTC | #1
On Sun, Mar 19, 2023 at 01:42:14PM +0200, Mike Rapoport wrote:
> From: "Mike Rapoport (IBM)" <rppt@kernel.org>
>
> The get_page_from_free_area() helper is only used in mm/page_alloc.c so
> move it there to reduce noise in include/linux/mmzone.h
>
> Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> ---
>  include/linux/mmzone.h | 7 -------
>  mm/page_alloc.c        | 7 +++++++
>  2 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index 96599cb9eb62..8f5a9e2c722a 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -108,13 +108,6 @@ struct free_area {
>  	unsigned long		nr_free;
>  };
>
> -static inline struct page *get_page_from_free_area(struct free_area *area,
> -					    int migratetype)
> -{
> -	return list_first_entry_or_null(&area->free_list[migratetype],
> -					struct page, lru);
> -}
> -
>  static inline bool free_area_empty(struct free_area *area, int migratetype)
>  {
>  	return list_empty(&area->free_list[migratetype]);
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 87d760236dba..2e72fdbdd8db 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -1048,6 +1048,13 @@ static inline void del_page_from_free_list(struct page *page, struct zone *zone,
>  	zone->free_area[order].nr_free--;
>  }
>
> +static inline struct page *get_page_from_free_area(struct free_area *area,
> +					    int migratetype)
> +{
> +	return list_first_entry_or_null(&area->free_list[migratetype],
> +					struct page, lru);
> +}
> +
>  /*
>   * If this is not the largest possible page, check if the buddy
>   * of the next-highest order is free. If it is, it's possible
>
> base-commit: 4018ab1f7cec061b8425737328edefebdc0ab832
> --
> 2.35.1
>

Good catch, I wonder if there are more functions like this that can be dropped
from headers?

Reviewed-by: Lorenzo Stoakes <lstoakes@gmail.com>
  
Kirill A. Shutemov March 19, 2023, 2:16 p.m. UTC | #2
On Sun, Mar 19, 2023 at 01:42:14PM +0200, Mike Rapoport wrote:
> From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> 
> The get_page_from_free_area() helper is only used in mm/page_alloc.c so
> move it there to reduce noise in include/linux/mmzone.h
> 
> Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>

Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
  
Matthew Wilcox March 19, 2023, 8:22 p.m. UTC | #3
On Sun, Mar 19, 2023 at 12:07:43PM +0000, Lorenzo Stoakes wrote:
> On Sun, Mar 19, 2023 at 01:42:14PM +0200, Mike Rapoport wrote:
> > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> >
> > The get_page_from_free_area() helper is only used in mm/page_alloc.c so
> > move it there to reduce noise in include/linux/mmzone.h

Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>

> Good catch, I wonder if there are more functions like this that can be dropped
> from headers?

I don't think anything outside mm/ has any reason to see 'struct
free_area'.  Unfortunately, it's a field in struct zone, so moving
it out of mmzone.h will be hard (unless we can move struct zone out of
mmzone.h?)

free_area_empty() can move to mm/internal.h though
  
Mike Rapoport March 19, 2023, 8:52 p.m. UTC | #4
On Sun, Mar 19, 2023 at 08:22:14PM +0000, Matthew Wilcox wrote:
> On Sun, Mar 19, 2023 at 12:07:43PM +0000, Lorenzo Stoakes wrote:
> > On Sun, Mar 19, 2023 at 01:42:14PM +0200, Mike Rapoport wrote:
> > > From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> > >
> > > The get_page_from_free_area() helper is only used in mm/page_alloc.c so
> > > move it there to reduce noise in include/linux/mmzone.h
> 
> Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> 
> > Good catch, I wonder if there are more functions like this that can be dropped
> > from headers?
> 
> I don't think anything outside mm/ has any reason to see 'struct
> free_area'.  Unfortunately, it's a field in struct zone, so moving
> it out of mmzone.h will be hard (unless we can move struct zone out of
> mmzone.h?)

Seems possible but not trivial.
 
> free_area_empty() can move to mm/internal.h though

Yes.
  

Patch

diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 96599cb9eb62..8f5a9e2c722a 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -108,13 +108,6 @@  struct free_area {
 	unsigned long		nr_free;
 };
 
-static inline struct page *get_page_from_free_area(struct free_area *area,
-					    int migratetype)
-{
-	return list_first_entry_or_null(&area->free_list[migratetype],
-					struct page, lru);
-}
-
 static inline bool free_area_empty(struct free_area *area, int migratetype)
 {
 	return list_empty(&area->free_list[migratetype]);
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 87d760236dba..2e72fdbdd8db 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1048,6 +1048,13 @@  static inline void del_page_from_free_list(struct page *page, struct zone *zone,
 	zone->free_area[order].nr_free--;
 }
 
+static inline struct page *get_page_from_free_area(struct free_area *area,
+					    int migratetype)
+{
+	return list_first_entry_or_null(&area->free_list[migratetype],
+					struct page, lru);
+}
+
 /*
  * If this is not the largest possible page, check if the buddy
  * of the next-highest order is free. If it is, it's possible