Re: [PATCH] mm,migration: Avoid race between shift_arg_pages() and rmap_walk() during migration by not migrating temporary stacks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]