Changes: - Additional parameter in migrate_page_remove_references - Various cleanups - Credits - Against 2.6.14-rc5-mm1 + V5 swapmig + config patch. The intend of this patchset is to go further on the way to fully support all the features of the existing page migration code in the memory hotplug patchset. The attempt is to make this less intrusive and modularize in such a way that this can be easily reviewed and accepted upstream. The patchset now contains more functionality but there are some features of the hotplug patchset that are not included and may be added later after some more community discussion. - migration unwinding (I am not sure about this feature. May create more trouble than its worth) - try_to_unmap rewrite that allows more types of pages to be migratable. This is correlated with migration unwinding. If we had a reliable form of unmapping then no unwinding would be necessary. - arch dependent migration of the PG_arch1 bit (I have seen no application for it so far) - all features not directly related to page migration (f.e. catching pages, only allocating certain types of allocation on removable memory etc) This patchset depends on V5 of the Swap Migration patchset plus the config patch. It implements direct page migration on top of that patchset with the same APIs supported by the swap migration patchset. The patchset consists of six patches (only the first three are necessary to have basic direct migration support): 1. SwapCache patch SwapCache pages may have changed their type after lock_page(). Check for this and retry lookup if the page is no longer a SwapCache page after lookup. 2. radix_tree_replace patch Add replace_radix_tree (Nick: Maybe your solution is better?) 3. migrate_pages() Basic direct migration with fallback to swap 4. buffer_migrate_pages() patch Add filesystem dependent migration and support for the filesystems also supported by hotplug page migration. 5. policy layer updates for direct page migration There is a slight version mismatch going on right now since Linus tree contains more recent nodemask support than 2.6.14-rc5-mm1. sys_migrate_pages requires the more recent support form Paul. In order to make this work the hacks in cpuset.h must be removed. 6. Add remove_from_swap Slight hack around the problem of not having "force" in try_to_unmap like the hotplug project. Use reverse mapping to replace swap pte's with real ones. Reduces swap use. Credits (also in mm/vsmscan.c): Page migration was developed in the context of the memory hotplug project. The main authors of the migration code are: IWAMOTO Toshihiro Hirokazu Takahashi Dave Hansen