Index: linux-2.6.17-rc4-mm1/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- linux-2.6.17-rc4-mm1.orig/fs/xfs/linux-2.6/xfs_buf.c 2006-05-15 15:40:10.234552282 -0700 +++ linux-2.6.17-rc4-mm1/fs/xfs/linux-2.6/xfs_buf.c 2006-05-17 20:01:18.114231590 -0700 @@ -1522,7 +1522,7 @@ xfs_mapping_buftarg( struct address_space *mapping; static const struct address_space_operations mapping_aops = { .sync_page = block_sync_page, - .migratepage = fail_migrate_page, +// .migratepage = fail_migrate_page, }; inode = new_inode(bdev->bd_inode->i_sb); Index: linux-2.6.17-rc4-mm1/mm/migrate.c =================================================================== --- linux-2.6.17-rc4-mm1.orig/mm/migrate.c 2006-05-17 18:56:33.949360865 -0700 +++ linux-2.6.17-rc4-mm1/mm/migrate.c 2006-05-17 20:01:57.446754733 -0700 @@ -95,6 +95,12 @@ static inline void move_to_lru(struct pa put_page(page); } +static inline void move_to_lru(struct page *page) +{ + list_del(&page->lru); + __move_to_lru(page); +} + /* * Add isolated pages on the list back to the LRU. * @@ -481,6 +487,8 @@ static int writeout(struct address_space }; int rc; + printk(KERN_ERR "Page dirty %p\n",page); + if (!mapping->a_ops->writepage) /* No write method for the address space */ return -EINVAL; @@ -595,14 +603,18 @@ static int unmap_and_move(new_page_t get int rc; struct page *newpage = get_new_page(page, private); + printk(KERN_ERR "move_to_new_page: get_new_page=%p private=%lu page=%p newpage=%p\n", + get_new_page, private, page, newpage); + if (!newpage) return -ENOMEM; + printk(KERN_ERR "unmap_and_move: page=%p force=%d\n", page, force); if (page_count(page) == 1) /* page was freed from under us. So we are done. */ return 0; - if (!TestSetPageLocked(page)) { + if (TestSetPageLocked(page)) { if (!force) return -EAGAIN; lock_page(page); @@ -730,6 +742,7 @@ static struct page *new_page_node(struct return alloc_pages_node(pm->node, GFP_HIGHUSER, 0); } +#ifdef CONFIG_NUMA /* * Move a list of pages in the address space of the currently executing * process. Index: linux-2.6.17-rc4-mm1/include/asm-ia64/unistd.h =================================================================== --- linux-2.6.17-rc4-mm1.orig/include/asm-ia64/unistd.h 2006-05-17 18:55:18.919829606 -0700 +++ linux-2.6.17-rc4-mm1/include/asm-ia64/unistd.h 2006-05-17 20:01:18.118137598 -0700 @@ -293,6 +293,7 @@ #define __NR_vmsplice 1302 + #ifdef __KERNEL__