This patch declares compact_nodes prototype in compaction.h
header file.
This will allow us to call compaction from other places.
For example, during system suspend, suppose we want to check
the fragmentation state of the system. Then based on certain
threshold, we can invoke compaction, when system is idle.
There could be other use cases.
Signed-off-by: Pintu Kumar <[email protected]>
---
include/linux/compaction.h | 2 +-
mm/compaction.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/compaction.h b/include/linux/compaction.h
index aa8f61c..800ff50 100644
--- a/include/linux/compaction.h
+++ b/include/linux/compaction.h
@@ -50,7 +50,7 @@ extern bool compaction_deferred(struct zone *zone, int order);
extern void compaction_defer_reset(struct zone *zone, int order,
bool alloc_success);
extern bool compaction_restarting(struct zone *zone, int order);
-
+extern void compact_nodes(void);
#else
static inline unsigned long try_to_compact_pages(gfp_t gfp_mask,
unsigned int order, int alloc_flags,
diff --git a/mm/compaction.c b/mm/compaction.c
index 16e1b57..b793922 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1657,7 +1657,7 @@ static void compact_node(int nid)
}
/* Compact all nodes in the system */
-static void compact_nodes(void)
+void compact_nodes(void)
{
int nid;
--
1.7.9.5
On 08/07/2015 04:03 PM, Pintu Kumar wrote:
> This patch declares compact_nodes prototype in compaction.h
> header file.
> This will allow us to call compaction from other places.
> For example, during system suspend, suppose we want to check
> the fragmentation state of the system. Then based on certain
> threshold, we can invoke compaction, when system is idle.
> There could be other use cases.
Isn't it more common to introduce such visibility changes only as part
of series that actually benefit from it?
Otherwise next month somebody might notice that it's unused outside
compaction.c and send a cleanup patch to make it static again...
> Signed-off-by: Pintu Kumar <[email protected]>
> ---
> include/linux/compaction.h | 2 +-
> mm/compaction.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/compaction.h b/include/linux/compaction.h
> index aa8f61c..800ff50 100644
> --- a/include/linux/compaction.h
> +++ b/include/linux/compaction.h
> @@ -50,7 +50,7 @@ extern bool compaction_deferred(struct zone *zone, int order);
> extern void compaction_defer_reset(struct zone *zone, int order,
> bool alloc_success);
> extern bool compaction_restarting(struct zone *zone, int order);
> -
> +extern void compact_nodes(void);
> #else
> static inline unsigned long try_to_compact_pages(gfp_t gfp_mask,
> unsigned int order, int alloc_flags,
> diff --git a/mm/compaction.c b/mm/compaction.c
> index 16e1b57..b793922 100644
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -1657,7 +1657,7 @@ static void compact_node(int nid)
> }
>
> /* Compact all nodes in the system */
> -static void compact_nodes(void)
> +void compact_nodes(void)
> {
> int nid;
>
>
Hi,
> -----Original Message-----
> From: Vlastimil Babka [mailto:[email protected]]
> Sent: Friday, August 07, 2015 7:48 PM
> To: Pintu Kumar; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]
> Cc: [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]
> Subject: Re: [PATCH 1/1] mm: compaction: include compact_nodes in
> compaction.h
>
> On 08/07/2015 04:03 PM, Pintu Kumar wrote:
> > This patch declares compact_nodes prototype in compaction.h header
> > file.
> > This will allow us to call compaction from other places.
> > For example, during system suspend, suppose we want to check the
> > fragmentation state of the system. Then based on certain threshold, we
> > can invoke compaction, when system is idle.
> > There could be other use cases.
>
> Isn't it more common to introduce such visibility changes only as part of series
> that actually benefit from it?
>
Other series are not ready right now and not defined yet. It may take longer time.
I thought, it is left to the user, if somebody wants to invoke compaction from other sub-system.
> Otherwise next month somebody might notice that it's unused outside
> compaction.c and send a cleanup patch to make it static again...
>
> > Signed-off-by: Pintu Kumar <[email protected]>
> > ---
> > include/linux/compaction.h | 2 +-
> > mm/compaction.c | 2 +-
> > 2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/linux/compaction.h b/include/linux/compaction.h
> > index aa8f61c..800ff50 100644
> > --- a/include/linux/compaction.h
> > +++ b/include/linux/compaction.h
> > @@ -50,7 +50,7 @@ extern bool compaction_deferred(struct zone *zone, int
> order);
> > extern void compaction_defer_reset(struct zone *zone, int order,
> > bool alloc_success);
> > extern bool compaction_restarting(struct zone *zone, int order);
> > -
> > +extern void compact_nodes(void);
> > #else
> > static inline unsigned long try_to_compact_pages(gfp_t gfp_mask,
> > unsigned int order, int alloc_flags, diff --git
> a/mm/compaction.c
> > b/mm/compaction.c index 16e1b57..b793922 100644
> > --- a/mm/compaction.c
> > +++ b/mm/compaction.c
> > @@ -1657,7 +1657,7 @@ static void compact_node(int nid)
> > }
> >
> > /* Compact all nodes in the system */ -static void
> > compact_nodes(void)
> > +void compact_nodes(void)
> > {
> > int nid;
> >
> >