diff options
| author | Christoph Lameter <clameter@sgi.com> | 2006-03-22 00:09:12 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-22 07:54:06 -0800 | 
| commit | b20a35035f983f4ac7e29c4a68f30e43510007e0 (patch) | |
| tree | fdf090ddddbcc275349f62f71adc98649e2c683b /fs | |
| parent | 442295c94bf650221af3ef20fc68fa3e93876818 (diff) | |
| download | linux-b20a35035f983f4ac7e29c4a68f30e43510007e0.tar.bz2 | |
[PATCH] page migration reorg
Centralize the page migration functions in anticipation of additional
tinkering.  Creates a new file mm/migrate.c
1. Extract buffer_migrate_page() from fs/buffer.c
2. Extract central migration code from vmscan.c
3. Extract some components from mempolicy.c
4. Export pageout() and remove_from_swap() from vmscan.c
5. Make it possible to configure NUMA systems without page migration
   and non-NUMA systems with page migration.
I had to so some #ifdeffing in mempolicy.c that may need a cleanup.
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 'fs')
| -rw-r--r-- | fs/buffer.c | 62 | ||||
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_buf.c | 1 | 
2 files changed, 1 insertions, 62 deletions
| diff --git a/fs/buffer.c b/fs/buffer.c index a9b399402007..1d3683d496f8 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -3051,68 +3051,6 @@ asmlinkage long sys_bdflush(int func, long data)  }  /* - * Migration function for pages with buffers. This function can only be used - * if the underlying filesystem guarantees that no other references to "page" - * exist. - */ -#ifdef CONFIG_MIGRATION -int buffer_migrate_page(struct page *newpage, struct page *page) -{ -	struct address_space *mapping = page->mapping; -	struct buffer_head *bh, *head; -	int rc; - -	if (!mapping) -		return -EAGAIN; - -	if (!page_has_buffers(page)) -		return migrate_page(newpage, page); - -	head = page_buffers(page); - -	rc = migrate_page_remove_references(newpage, page, 3); -	if (rc) -		return rc; - -	bh = head; -	do { -		get_bh(bh); -		lock_buffer(bh); -		bh = bh->b_this_page; - -	} while (bh != head); - -	ClearPagePrivate(page); -	set_page_private(newpage, page_private(page)); -	set_page_private(page, 0); -	put_page(page); -	get_page(newpage); - -	bh = head; -	do { -		set_bh_page(bh, newpage, bh_offset(bh)); -		bh = bh->b_this_page; - -	} while (bh != head); - -	SetPagePrivate(newpage); - -	migrate_page_copy(newpage, page); - -	bh = head; -	do { -		unlock_buffer(bh); - 		put_bh(bh); -		bh = bh->b_this_page; - -	} while (bh != head); - -	return 0; -} -EXPORT_SYMBOL(buffer_migrate_page); -#endif - -/*   * Buffer-head allocation   */  static kmem_cache_t *bh_cachep; diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index bfb4f2917bb6..8cdfa4151659 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -29,6 +29,7 @@  #include <linux/blkdev.h>  #include <linux/hash.h>  #include <linux/kthread.h> +#include <linux/migrate.h>  #include "xfs_linux.h"  STATIC kmem_zone_t *xfs_buf_zone; |