linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm: move function ‘is_pageblock_removable_nolock’ inside blockers
@ 2018-05-05 20:11 Mathieu Malaterre
  2018-05-09  7:43 ` Michal Hocko
  2018-05-09 18:59 ` [PATCH v2] mm: move function ‘is_pageblock_removable_nolock’ to mm/memory_hotplug.c Mathieu Malaterre
  0 siblings, 2 replies; 4+ messages in thread
From: Mathieu Malaterre @ 2018-05-05 20:11 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Mathieu Malaterre, Michal Hocko, Vlastimil Babka, Mel Gorman,
	Pavel Tatashin, Tetsuo Handa, Joonsoo Kim, linux-mm,
	linux-kernel

Function ‘is_pageblock_removable_nolock’ is not used unless
CONFIG_MEMORY_HOTREMOVE is activated. Move it in between #ifdef sentinel to
match prototype in <linux/memory_hotplug.h>. Silence gcc warning (W=1):

  mm/page_alloc.c:7704:6: warning: no previous prototype for ‘is_pageblock_removable_nolock’ [-Wmissing-prototypes]

Signed-off-by: Mathieu Malaterre <malat@debian.org>
---
 mm/page_alloc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 905db9d7962f..94ca579938e5 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -7701,6 +7701,7 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
 	return false;
 }
 
+#ifdef CONFIG_MEMORY_HOTREMOVE
 bool is_pageblock_removable_nolock(struct page *page)
 {
 	struct zone *zone;
@@ -7723,6 +7724,7 @@ bool is_pageblock_removable_nolock(struct page *page)
 
 	return !has_unmovable_pages(zone, page, 0, MIGRATE_MOVABLE, true);
 }
+#endif
 
 #if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA)
 
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] mm: move function ‘is_pageblock_removable_nolock’ inside blockers
  2018-05-05 20:11 [PATCH] mm: move function ‘is_pageblock_removable_nolock’ inside blockers Mathieu Malaterre
@ 2018-05-09  7:43 ` Michal Hocko
  2018-05-09 18:59 ` [PATCH v2] mm: move function ‘is_pageblock_removable_nolock’ to mm/memory_hotplug.c Mathieu Malaterre
  1 sibling, 0 replies; 4+ messages in thread
From: Michal Hocko @ 2018-05-09  7:43 UTC (permalink / raw)
  To: Mathieu Malaterre
  Cc: Andrew Morton, Vlastimil Babka, Mel Gorman, Pavel Tatashin,
	Tetsuo Handa, Joonsoo Kim, linux-mm, linux-kernel

On Sat 05-05-18 22:11:06, Mathieu Malaterre wrote:
> Function ‘is_pageblock_removable_nolock’ is not used unless
> CONFIG_MEMORY_HOTREMOVE is activated. Move it in between #ifdef sentinel to
> match prototype in <linux/memory_hotplug.h>. Silence gcc warning (W=1):
> 
>   mm/page_alloc.c:7704:6: warning: no previous prototype for ‘is_pageblock_removable_nolock’ [-Wmissing-prototypes]

Could you move is_pageblock_removable_nolock to mm/memory_hotplug.c
and make it static instead? There is only one caller
is_mem_section_removable so there shouldn't be any real reason to have
it extern and add more ifdefs.
 
> Signed-off-by: Mathieu Malaterre <malat@debian.org>
> ---
>  mm/page_alloc.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 905db9d7962f..94ca579938e5 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -7701,6 +7701,7 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
>  	return false;
>  }
>  
> +#ifdef CONFIG_MEMORY_HOTREMOVE
>  bool is_pageblock_removable_nolock(struct page *page)
>  {
>  	struct zone *zone;
> @@ -7723,6 +7724,7 @@ bool is_pageblock_removable_nolock(struct page *page)
>  
>  	return !has_unmovable_pages(zone, page, 0, MIGRATE_MOVABLE, true);
>  }
> +#endif
>  
>  #if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA)
>  
> -- 
> 2.11.0
> 

-- 
Michal Hocko
SUSE Labs

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2] mm: move function ‘is_pageblock_removable_nolock’ to mm/memory_hotplug.c
  2018-05-05 20:11 [PATCH] mm: move function ‘is_pageblock_removable_nolock’ inside blockers Mathieu Malaterre
  2018-05-09  7:43 ` Michal Hocko
@ 2018-05-09 18:59 ` Mathieu Malaterre
  2018-05-10  8:36   ` Michal Hocko
  1 sibling, 1 reply; 4+ messages in thread
From: Mathieu Malaterre @ 2018-05-09 18:59 UTC (permalink / raw)
  To: Michal Hocko
  Cc: Mathieu Malaterre, Andrew Morton, Michal Hocko, Vlastimil Babka,
	Dan Williams, Joonsoo Kim, Pavel Tatashin, Greg Kroah-Hartman,
	Reza Arbab, Thomas Gleixner, Mel Gorman, Tetsuo Handa, linux-mm,
	linux-kernel

Function ‘is_pageblock_removable_nolock’ is not used outside of
mm/memory_hotplug.c. Move it next to unique caller:
‘is_mem_section_removable’ and make it static.
Remove prototype in <linux/memory_hotplug.h>. Silence gcc warning (W=1):

  mm/page_alloc.c:7704:6: warning: no previous prototype for ‘is_pageblock_removable_nolock’ [-Wmissing-prototypes]

Suggested-by: Michal Hocko <mhocko@kernel.org>
Signed-off-by: Mathieu Malaterre <malat@debian.org>
---
v2: this function can be made static, make it so

 include/linux/memory_hotplug.h |  1 -
 mm/memory_hotplug.c            | 23 +++++++++++++++++++++++
 mm/page_alloc.c                | 23 -----------------------
 3 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
index e0e49b5b1ee1..9566d551a41b 100644
--- a/include/linux/memory_hotplug.h
+++ b/include/linux/memory_hotplug.h
@@ -107,7 +107,6 @@ static inline bool movable_node_is_enabled(void)
 }
 
 #ifdef CONFIG_MEMORY_HOTREMOVE
-extern bool is_pageblock_removable_nolock(struct page *page);
 extern int arch_remove_memory(u64 start, u64 size,
 		struct vmem_altmap *altmap);
 extern int __remove_pages(struct zone *zone, unsigned long start_pfn,
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index f74826cdceea..9342e120518a 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1237,6 +1237,29 @@ static struct page *next_active_pageblock(struct page *page)
 	return page + pageblock_nr_pages;
 }
 
+static bool is_pageblock_removable_nolock(struct page *page)
+{
+	struct zone *zone;
+	unsigned long pfn;
+
+	/*
+	 * We have to be careful here because we are iterating over memory
+	 * sections which are not zone aware so we might end up outside of
+	 * the zone but still within the section.
+	 * We have to take care about the node as well. If the node is offline
+	 * its NODE_DATA will be NULL - see page_zone.
+	 */
+	if (!node_online(page_to_nid(page)))
+		return false;
+
+	zone = page_zone(page);
+	pfn = page_to_pfn(page);
+	if (!zone_spans_pfn(zone, pfn))
+		return false;
+
+	return !has_unmovable_pages(zone, page, 0, MIGRATE_MOVABLE, true);
+}
+
 /* Checks if this range of memory is likely to be hot-removable. */
 bool is_mem_section_removable(unsigned long start_pfn, unsigned long nr_pages)
 {
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 905db9d7962f..52731601ca5a 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -7701,29 +7701,6 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
 	return false;
 }
 
-bool is_pageblock_removable_nolock(struct page *page)
-{
-	struct zone *zone;
-	unsigned long pfn;
-
-	/*
-	 * We have to be careful here because we are iterating over memory
-	 * sections which are not zone aware so we might end up outside of
-	 * the zone but still within the section.
-	 * We have to take care about the node as well. If the node is offline
-	 * its NODE_DATA will be NULL - see page_zone.
-	 */
-	if (!node_online(page_to_nid(page)))
-		return false;
-
-	zone = page_zone(page);
-	pfn = page_to_pfn(page);
-	if (!zone_spans_pfn(zone, pfn))
-		return false;
-
-	return !has_unmovable_pages(zone, page, 0, MIGRATE_MOVABLE, true);
-}
-
 #if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA)
 
 static unsigned long pfn_max_align_down(unsigned long pfn)
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] mm: move function ‘is_pageblock_removable_nolock’ to mm/memory_hotplug.c
  2018-05-09 18:59 ` [PATCH v2] mm: move function ‘is_pageblock_removable_nolock’ to mm/memory_hotplug.c Mathieu Malaterre
@ 2018-05-10  8:36   ` Michal Hocko
  0 siblings, 0 replies; 4+ messages in thread
From: Michal Hocko @ 2018-05-10  8:36 UTC (permalink / raw)
  To: Mathieu Malaterre
  Cc: Andrew Morton, Vlastimil Babka, Dan Williams, Joonsoo Kim,
	Pavel Tatashin, Greg Kroah-Hartman, Reza Arbab, Thomas Gleixner,
	Mel Gorman, Tetsuo Handa, linux-mm, linux-kernel

On Wed 09-05-18 20:59:57, Mathieu Malaterre wrote:
> Function ‘is_pageblock_removable_nolock’ is not used outside of
> mm/memory_hotplug.c. Move it next to unique caller:
> ‘is_mem_section_removable’ and make it static.
> Remove prototype in <linux/memory_hotplug.h>. Silence gcc warning (W=1):
> 
>   mm/page_alloc.c:7704:6: warning: no previous prototype for ‘is_pageblock_removable_nolock’ [-Wmissing-prototypes]
> 
> Suggested-by: Michal Hocko <mhocko@kernel.org>
> Signed-off-by: Mathieu Malaterre <malat@debian.org>

Acked-by: Michal Hocko <mhocko@suse.com>

Thanks!

> ---
> v2: this function can be made static, make it so
> 
>  include/linux/memory_hotplug.h |  1 -
>  mm/memory_hotplug.c            | 23 +++++++++++++++++++++++
>  mm/page_alloc.c                | 23 -----------------------
>  3 files changed, 23 insertions(+), 24 deletions(-)
> 
> diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
> index e0e49b5b1ee1..9566d551a41b 100644
> --- a/include/linux/memory_hotplug.h
> +++ b/include/linux/memory_hotplug.h
> @@ -107,7 +107,6 @@ static inline bool movable_node_is_enabled(void)
>  }
>  
>  #ifdef CONFIG_MEMORY_HOTREMOVE
> -extern bool is_pageblock_removable_nolock(struct page *page);
>  extern int arch_remove_memory(u64 start, u64 size,
>  		struct vmem_altmap *altmap);
>  extern int __remove_pages(struct zone *zone, unsigned long start_pfn,
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index f74826cdceea..9342e120518a 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1237,6 +1237,29 @@ static struct page *next_active_pageblock(struct page *page)
>  	return page + pageblock_nr_pages;
>  }
>  
> +static bool is_pageblock_removable_nolock(struct page *page)
> +{
> +	struct zone *zone;
> +	unsigned long pfn;
> +
> +	/*
> +	 * We have to be careful here because we are iterating over memory
> +	 * sections which are not zone aware so we might end up outside of
> +	 * the zone but still within the section.
> +	 * We have to take care about the node as well. If the node is offline
> +	 * its NODE_DATA will be NULL - see page_zone.
> +	 */
> +	if (!node_online(page_to_nid(page)))
> +		return false;
> +
> +	zone = page_zone(page);
> +	pfn = page_to_pfn(page);
> +	if (!zone_spans_pfn(zone, pfn))
> +		return false;
> +
> +	return !has_unmovable_pages(zone, page, 0, MIGRATE_MOVABLE, true);
> +}
> +
>  /* Checks if this range of memory is likely to be hot-removable. */
>  bool is_mem_section_removable(unsigned long start_pfn, unsigned long nr_pages)
>  {
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 905db9d7962f..52731601ca5a 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -7701,29 +7701,6 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
>  	return false;
>  }
>  
> -bool is_pageblock_removable_nolock(struct page *page)
> -{
> -	struct zone *zone;
> -	unsigned long pfn;
> -
> -	/*
> -	 * We have to be careful here because we are iterating over memory
> -	 * sections which are not zone aware so we might end up outside of
> -	 * the zone but still within the section.
> -	 * We have to take care about the node as well. If the node is offline
> -	 * its NODE_DATA will be NULL - see page_zone.
> -	 */
> -	if (!node_online(page_to_nid(page)))
> -		return false;
> -
> -	zone = page_zone(page);
> -	pfn = page_to_pfn(page);
> -	if (!zone_spans_pfn(zone, pfn))
> -		return false;
> -
> -	return !has_unmovable_pages(zone, page, 0, MIGRATE_MOVABLE, true);
> -}
> -
>  #if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA)
>  
>  static unsigned long pfn_max_align_down(unsigned long pfn)
> -- 
> 2.11.0
> 

-- 
Michal Hocko
SUSE Labs

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-05-10  8:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-05 20:11 [PATCH] mm: move function ‘is_pageblock_removable_nolock’ inside blockers Mathieu Malaterre
2018-05-09  7:43 ` Michal Hocko
2018-05-09 18:59 ` [PATCH v2] mm: move function ‘is_pageblock_removable_nolock’ to mm/memory_hotplug.c Mathieu Malaterre
2018-05-10  8:36   ` Michal Hocko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).