On Wed, 12 May 2010 16:33:12 -0500 (CDT) Christoph Lameter <cl@xxxxxxxxx> wrote: > > Still think this special casing is not that good. > > One can also disable migration by providing a migration function that > always fails. One such function exists in mm/migrate.c: > > /* Always fail migration. Used for mappings that are not movable */ > int fail_migrate_page(struct address_space *mapping, > struct page *newpage, struct page *page) > { > return -EIO; > } > EXPORT_SYMBOL(fail_migrate_page); > > > The migration function is specified in > > vma->vm_ops->migrate > > If that is set to fail_migrate_page() then the pages in the vma will never > be migrated. XFS uses it f.e. to avoid page migration: > > STATIC int > xfs_mapping_buftarg( > xfs_buftarg_t *btp, > struct block_device *bdev) > { > struct backing_dev_info *bdi; > struct inode *inode; > struct address_space *mapping; > static const struct address_space_operations mapping_aops = { > .sync_page = block_sync_page, > .migratepage = fail_migrate_page, > }; > > > > Would it not be possible to do something similar for the temporary stack? > Problem here is unmap->remap. ->migratepage() function is used as unmap -> migratepage() -> failed -> remap Then, migratepage() itself is no help. We need some check-callback before unmap or lock to wait for an event we can make remapping progress. Thanks, -Kame -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>