aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fs.h
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2006-02-01 06:05:41 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-02-01 11:53:17 -0500
commite965f9630c651fa4249039fd4b80c9392d07a856 (patch)
tree1353dd536d0ee549c30e462086624c21788ee9d2 /include/linux/fs.h
parent7e2ab150d1b3b286a4c864c60a549b2601777b63 (diff)
[PATCH] Direct Migration V9: Avoid writeback / page_migrate() method
Migrate a page with buffers without requiring writeback This introduces a new address space operation migratepage() that may be used by a filesystem to implement its own version of page migration. A version is provided that migrates buffers attached to pages. Some filesystems (ext2, ext3, xfs) are modified to utilize this feature. The swapper address space operation are modified so that a regular migrate_page() will occur for anonymous pages without writeback (migrate_pages forces every anonymous page to have a swap entry). Signed-off-by: Mike Kravetz <kravetz@us.ibm.com> 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/fs.h')
-rw-r--r--include/linux/fs.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 84bb449b9b01..e059da947007 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -363,6 +363,8 @@ struct address_space_operations {
363 loff_t offset, unsigned long nr_segs); 363 loff_t offset, unsigned long nr_segs);
364 struct page* (*get_xip_page)(struct address_space *, sector_t, 364 struct page* (*get_xip_page)(struct address_space *, sector_t,
365 int); 365 int);
366 /* migrate the contents of a page to the specified target */
367 int (*migratepage) (struct page *, struct page *);
366}; 368};
367 369
368struct backing_dev_info; 370struct backing_dev_info;
@@ -1719,6 +1721,12 @@ extern void simple_release_fs(struct vfsmount **mount, int *count);
1719 1721
1720extern ssize_t simple_read_from_buffer(void __user *, size_t, loff_t *, const void *, size_t); 1722extern ssize_t simple_read_from_buffer(void __user *, size_t, loff_t *, const void *, size_t);
1721 1723
1724#ifdef CONFIG_MIGRATION
1725extern int buffer_migrate_page(struct page *, struct page *);
1726#else
1727#define buffer_migrate_page NULL
1728#endif
1729
1722extern int inode_change_ok(struct inode *, struct iattr *); 1730extern int inode_change_ok(struct inode *, struct iattr *);
1723extern int __must_check inode_setattr(struct inode *, struct iattr *); 1731extern int __must_check inode_setattr(struct inode *, struct iattr *);
1724 1732