Commit 2cd4b8e1 authored by Guoqing Jiang's avatar Guoqing Jiang Committed by Linus Torvalds

mm/damon: move the implementation of damon_insert_region to damon.h

Usually, inline function is declared static since it should sit between
storage and type.  And implement it in a header file if used by multiple
files.

And this change also fixes compile issue when backport damon to 5.10.

  mm/damon/vaddr.c: In function `damon_va_evenly_split_region':
  ./include/linux/damon.h:425:13: error: inlining failed in call to `always_inline' `damon_insert_region': function body not available
  425 | inline void damon_insert_region(struct damon_region *r,
      | ^~~~~~~~~~~~~~~~~~~
  mm/damon/vaddr.c:86:3: note: called from here
  86 | damon_insert_region(n, r, next, t);
     | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Link: https://lkml.kernel.org/r/20211223085703.6142-1-guoqing.jiang@linux.devSigned-off-by: default avatarGuoqing Jiang <guoqing.jiang@linux.dev>
Reviewed-by: default avatarSeongJae Park <sj@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 49f4203a
...@@ -451,9 +451,18 @@ static inline struct damon_region *damon_last_region(struct damon_target *t) ...@@ -451,9 +451,18 @@ static inline struct damon_region *damon_last_region(struct damon_target *t)
#ifdef CONFIG_DAMON #ifdef CONFIG_DAMON
struct damon_region *damon_new_region(unsigned long start, unsigned long end); struct damon_region *damon_new_region(unsigned long start, unsigned long end);
inline void damon_insert_region(struct damon_region *r,
/*
* Add a region between two other regions
*/
static inline void damon_insert_region(struct damon_region *r,
struct damon_region *prev, struct damon_region *next, struct damon_region *prev, struct damon_region *next,
struct damon_target *t); struct damon_target *t)
{
__list_add(&r->list, &prev->list, &next->list);
t->nr_regions++;
}
void damon_add_region(struct damon_region *r, struct damon_target *t); void damon_add_region(struct damon_region *r, struct damon_target *t);
void damon_destroy_region(struct damon_region *r, struct damon_target *t); void damon_destroy_region(struct damon_region *r, struct damon_target *t);
......
...@@ -49,17 +49,6 @@ struct damon_region *damon_new_region(unsigned long start, unsigned long end) ...@@ -49,17 +49,6 @@ struct damon_region *damon_new_region(unsigned long start, unsigned long end)
return region; return region;
} }
/*
* Add a region between two other regions
*/
inline void damon_insert_region(struct damon_region *r,
struct damon_region *prev, struct damon_region *next,
struct damon_target *t)
{
__list_add(&r->list, &prev->list, &next->list);
t->nr_regions++;
}
void damon_add_region(struct damon_region *r, struct damon_target *t) void damon_add_region(struct damon_region *r, struct damon_target *t)
{ {
list_add_tail(&r->list, &t->regions_list); list_add_tail(&r->list, &t->regions_list);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment