aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2006-06-23 05:03:33 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-23 10:42:50 -0400
commit2d1db3b1170db4e8bf0531dd636742269c2cf579 (patch)
tree1161ed614a55869c278234d7472673fd1a577887 /include/linux
parentc3fcf8a5daacf350f0632e1379414c01f34eeea3 (diff)
[PATCH] page migration cleanup: pass "mapping" to migration functions
Change handling of address spaces. Pass a pointer to the address space in which the page is migrated to all migration function. This avoids repeatedly having to retrieve the address space pointer from the page and checking it for validity. The old page mapping will change once migration has gone to a certain step, so it is less confusing to have the pointer always available. Move the setting of the mapping and index for the new page into migrate_pages(). Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/fs.h6
-rw-r--r--include/linux/migrate.h6
2 files changed, 8 insertions, 4 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h
index c823a3815e24..e917403f4d58 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -376,7 +376,8 @@ struct address_space_operations {
376 struct page* (*get_xip_page)(struct address_space *, sector_t, 376 struct page* (*get_xip_page)(struct address_space *, sector_t,
377 int); 377 int);
378 /* migrate the contents of a page to the specified target */ 378 /* migrate the contents of a page to the specified target */
379 int (*migratepage) (struct page *, struct page *); 379 int (*migratepage) (struct address_space *,
380 struct page *, struct page *);
380}; 381};
381 382
382struct backing_dev_info; 383struct backing_dev_info;
@@ -1772,7 +1773,8 @@ extern void simple_release_fs(struct vfsmount **mount, int *count);
1772extern ssize_t simple_read_from_buffer(void __user *, size_t, loff_t *, const void *, size_t); 1773extern ssize_t simple_read_from_buffer(void __user *, size_t, loff_t *, const void *, size_t);
1773 1774
1774#ifdef CONFIG_MIGRATION 1775#ifdef CONFIG_MIGRATION
1775extern int buffer_migrate_page(struct page *, struct page *); 1776extern int buffer_migrate_page(struct address_space *,
1777 struct page *, struct page *);
1776#else 1778#else
1777#define buffer_migrate_page NULL 1779#define buffer_migrate_page NULL
1778#endif 1780#endif
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index e8d3b08cc354..287c47b5e5df 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -6,12 +6,14 @@
6#ifdef CONFIG_MIGRATION 6#ifdef CONFIG_MIGRATION
7extern int isolate_lru_page(struct page *p, struct list_head *pagelist); 7extern int isolate_lru_page(struct page *p, struct list_head *pagelist);
8extern int putback_lru_pages(struct list_head *l); 8extern int putback_lru_pages(struct list_head *l);
9extern int migrate_page(struct page *, struct page *); 9extern int migrate_page(struct address_space *,
10 struct page *, struct page *);
10extern int migrate_pages(struct list_head *l, struct list_head *t, 11extern int migrate_pages(struct list_head *l, struct list_head *t,
11 struct list_head *moved, struct list_head *failed); 12 struct list_head *moved, struct list_head *failed);
12extern int migrate_pages_to(struct list_head *pagelist, 13extern int migrate_pages_to(struct list_head *pagelist,
13 struct vm_area_struct *vma, int dest); 14 struct vm_area_struct *vma, int dest);
14extern int fail_migrate_page(struct page *, struct page *); 15extern int fail_migrate_page(struct address_space *,
16 struct page *, struct page *);
15 17
16extern int migrate_prep(void); 18extern int migrate_prep(void);
17 19