mm: fix build warnings in <linux/compaction.h>
Randy reported below build error. > In file included from ../include/linux/balloon_compaction.h:48:0, > from ../mm/balloon_compaction.c:11: > ../include/linux/compaction.h:237:51: warning: 'struct node' declared inside parameter list [enabled by default] > static inline int compaction_register_node(struct node *node) > ../include/linux/compaction.h:237:51: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default] > ../include/linux/compaction.h:242:54: warning: 'struct node' declared inside parameter list [enabled by default] > static inline void compaction_unregister_node(struct node *node) > It was caused by non-lru page migration which needs compaction.h but compaction.h doesn't include any header to be standalone. I think proper header for non-lru page migration is migrate.h rather than compaction.h because migrate.h has already headers needed to work non-lru page migration indirectly like isolate_mode_t, migrate_mode MIGRATEPAGE_SUCCESS. [akpm@linux-foundation.org: revert mm-balloon-use-general-non-lru-movable-page-feature-fix.patch temp fix] Link: http://lkml.kernel.org/r/20160610003304.GE29779@bbox Signed-off-by: Minchan Kim <minchan@kernel.org> Reported-by: Randy Dunlap <rdunlap@infradead.org> Cc: Konstantin Khlebnikov <koct9i@gmail.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Gioh Kim <gi-oh.kim@profitbricks.com> Cc: Rafael Aquini <aquini@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
0db501f7a3
Коммит
dd4123f324
|
@ -181,11 +181,12 @@ After isolation, VM calls migratepage of driver with isolated page.
|
|||
The function of migratepage is to move content of the old page to new page
|
||||
and set up fields of struct page newpage. Keep in mind that you should
|
||||
indicate to the VM the oldpage is no longer movable via __ClearPageMovable()
|
||||
under page_lock if you migrated the oldpage successfully and returns 0.
|
||||
If driver cannot migrate the page at the moment, driver can return -EAGAIN.
|
||||
On -EAGAIN, VM will retry page migration in a short time because VM interprets
|
||||
-EAGAIN as "temporal migration failure". On returning any error except -EAGAIN,
|
||||
VM will give up the page migration without retrying in this time.
|
||||
under page_lock if you migrated the oldpage successfully and returns
|
||||
MIGRATEPAGE_SUCCESS. If driver cannot migrate the page at the moment, driver
|
||||
can return -EAGAIN. On -EAGAIN, VM will retry page migration in a short time
|
||||
because VM interprets -EAGAIN as "temporal migration failure". On returning
|
||||
any error except -EAGAIN, VM will give up the page migration without retrying
|
||||
in this time.
|
||||
|
||||
Driver shouldn't touch page.lru field VM using in the functions.
|
||||
|
||||
|
|
|
@ -493,7 +493,7 @@ static int virtballoon_migratepage(struct balloon_dev_info *vb_dev_info,
|
|||
|
||||
put_page(page); /* balloon reference */
|
||||
|
||||
return 0;
|
||||
return MIGRATEPAGE_SUCCESS;
|
||||
}
|
||||
|
||||
static struct dentry *balloon_mount(struct file_system_type *fs_type,
|
||||
|
|
|
@ -45,8 +45,7 @@
|
|||
#define _LINUX_BALLOON_COMPACTION_H
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/page-flags.h>
|
||||
#include <linux/node.h>
|
||||
#include <linux/compaction.h>
|
||||
#include <linux/migrate.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/fs.h>
|
||||
|
|
|
@ -54,9 +54,6 @@ enum compact_result {
|
|||
struct alloc_context; /* in mm/internal.h */
|
||||
|
||||
#ifdef CONFIG_COMPACTION
|
||||
extern int PageMovable(struct page *page);
|
||||
extern void __SetPageMovable(struct page *page, struct address_space *mapping);
|
||||
extern void __ClearPageMovable(struct page *page);
|
||||
extern int sysctl_compact_memory;
|
||||
extern int sysctl_compaction_handler(struct ctl_table *table, int write,
|
||||
void __user *buffer, size_t *length, loff_t *ppos);
|
||||
|
@ -154,19 +151,6 @@ extern void kcompactd_stop(int nid);
|
|||
extern void wakeup_kcompactd(pg_data_t *pgdat, int order, int classzone_idx);
|
||||
|
||||
#else
|
||||
static inline int PageMovable(struct page *page)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline void __SetPageMovable(struct page *page,
|
||||
struct address_space *mapping)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void __ClearPageMovable(struct page *page)
|
||||
{
|
||||
}
|
||||
|
||||
static inline enum compact_result try_to_compact_pages(gfp_t gfp_mask,
|
||||
unsigned int order, int alloc_flags,
|
||||
const struct alloc_context *ac,
|
||||
|
|
|
@ -71,6 +71,21 @@ static inline int migrate_huge_page_move_mapping(struct address_space *mapping,
|
|||
|
||||
#endif /* CONFIG_MIGRATION */
|
||||
|
||||
#ifdef CONFIG_COMPACTION
|
||||
extern int PageMovable(struct page *page);
|
||||
extern void __SetPageMovable(struct page *page, struct address_space *mapping);
|
||||
extern void __ClearPageMovable(struct page *page);
|
||||
#else
|
||||
static inline int PageMovable(struct page *page) { return 0; };
|
||||
static inline void __SetPageMovable(struct page *page,
|
||||
struct address_space *mapping)
|
||||
{
|
||||
}
|
||||
static inline void __ClearPageMovable(struct page *page)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NUMA_BALANCING
|
||||
extern bool pmd_trans_migrating(pmd_t pmd);
|
||||
extern int migrate_misplaced_page(struct page *page,
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
#include <linux/zsmalloc.h>
|
||||
#include <linux/zpool.h>
|
||||
#include <linux/mount.h>
|
||||
#include <linux/compaction.h>
|
||||
#include <linux/migrate.h>
|
||||
#include <linux/pagemap.h>
|
||||
|
||||
#define ZSPAGE_MAGIC 0x58
|
||||
|
@ -2107,7 +2107,7 @@ int zs_page_migrate(struct address_space *mapping, struct page *newpage,
|
|||
put_page(page);
|
||||
page = newpage;
|
||||
|
||||
ret = 0;
|
||||
ret = MIGRATEPAGE_SUCCESS;
|
||||
unpin_objects:
|
||||
for (addr = s_addr + offset; addr < s_addr + pos;
|
||||
addr += class->size) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче