2006-03-28 02:26:33

by Lu, Yinghai

[permalink] [raw]
Subject: migrate_pages_to not defined ...

please check the migrate)pages_to in migrate.h...
otherwise I can not compile the kernel if i disable the swap in config.

YH


diff --git a/include/linux/migrate.h b/include/linux/migrate.h
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -12,7 +12,7 @@ extern void migrate_page_copy(struct pag
extern int migrate_page_remove_references(struct page *, struct page *, int);
extern int migrate_pages(struct list_head *l, struct list_head *t,
struct list_head *moved, struct list_head *failed);
-int migrate_pages_to(struct list_head *pagelist,
+extern int migrate_pages_to(struct list_head *pagelist,
struct vm_area_struct *vma, int dest);
extern int fail_migrate_page(struct page *, struct page *);

@@ -26,6 +26,8 @@ static inline int putback_lru_pages(stru
static inline int migrate_pages(struct list_head *l, struct list_head *t,
struct list_head *moved, struct list_head *failed) { return -ENOSYS; }

+static inline int migrate_pages_to(struct list_head *pagelist,
+ struct vm_area_struct *vma, int dest) {
return -ENOSYS; }
static inline int migrate_prep(void) { return -ENOSYS; }

/* Possible settings for the migrate_page() method in address_operations */
diff --git a/mm/migrate.c b/mm/migrate.c
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -653,3 +653,4 @@ out:
nr_pages++;
return nr_pages;
}
+EXPORT_SYMBOL(migrate_pages_to);


2006-03-28 03:02:32

by Christoph Lameter

[permalink] [raw]
Subject: Re: migrate_pages_to not defined ...

On Mon, 27 Mar 2006, Yinghai Lu wrote:

> please check the migrate)pages_to in migrate.h...
> otherwise I can not compile the kernel if i disable the swap in config.

Right. migrate_pages_to in mempolicy.cis also called from mbind() outside
of CONFIG_MIGRATION sigh.

> +static inline int migrate_pages_to(struct list_head *pagelist,
> + struct vm_area_struct *vma, int dest) {
> return -ENOSYS; }

No it needs to return the number of pages not ENOSYS.

> diff --git a/mm/migrate.c b/mm/migrate.c
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -653,3 +653,4 @@ out:
> nr_pages++;
> return nr_pages;
> }
> +EXPORT_SYMBOL(migrate_pages_to);

Why add an export?

Could you try this patch?



Fix migrate_pages_to() definition.

Signed-off-by: Christoph Lameter <[email protected]>

Index: linux-2.6/include/linux/migrate.h
===================================================================
--- linux-2.6.orig/include/linux/migrate.h 2006-03-22 09:29:49.000000000 -0800
+++ linux-2.6/include/linux/migrate.h 2006-03-27 18:33:52.000000000 -0800
@@ -12,7 +12,7 @@ extern void migrate_page_copy(struct pag
extern int migrate_page_remove_references(struct page *, struct page *, int);
extern int migrate_pages(struct list_head *l, struct list_head *t,
struct list_head *moved, struct list_head *failed);
-int migrate_pages_to(struct list_head *pagelist,
+extern int migrate_pages_to(struct list_head *pagelist,
struct vm_area_struct *vma, int dest);
extern int fail_migrate_page(struct page *, struct page *);

@@ -26,6 +26,9 @@ static inline int putback_lru_pages(stru
static inline int migrate_pages(struct list_head *l, struct list_head *t,
struct list_head *moved, struct list_head *failed) { return -ENOSYS; }

+static int migrate_pages_to(struct list_head *pagelist,
+ struct vm_area_struct *vma, int dest) { return 0; }
+
static inline int migrate_prep(void) { return -ENOSYS; }

/* Possible settings for the migrate_page() method in address_operations */

2006-03-28 17:34:28

by Lu, Yinghai

[permalink] [raw]
Subject: RE: migrate_pages_to not defined ...

Your patch works.

YH