Re: [Lhms-devel] [PATCH 4/7] Direct Migration V5: migrate_pages() extension

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

 



On Wed, 30 Nov 2005, KAMEZAWA Hiroyuki wrote:

> I found a problem around the shmem,

The current page migration functions in mempolicy.c do not migrate shmem 
vmas to be safe. In the future we surely would like to support migration 
of shmem. I'd be glad if you could make sure that this works.

> Problem is:
> 1. a page of shmem(tmpfs)'s generic file is in page-cache. assume page is
> diry.
> 2. When it passed to migrate_page(), it reaches pageout() in the middle of
> migrate_page().
> 3. pageout calls shmem_writepage(), and the page turns to be swap-cache page.
>    At this point, page->mapping becomes NULL (see move_to_swapcache())

A swapcache page would have page->mapping pointing to swapper space. 
move_to_swap_cache does not set page->mapping == NULL.

> 7. Because spwapper_space's  a_ops->migratepage is not NULL,
>    "Avoid write back hook" in patch 7/7 is used.
> +		if (mapping->a_ops->migratepage) {
> +			rc = mapping->a_ops->migratepage(newpage, page);
> +			goto unlock_both;
> +                }
>    a_ops->migrate_page points to migrate_page() in mm/vmscan.c
> 8. migrate_page() try to replace radix tree entry in swapper_space.
> 9. Becasue page->mapping is NULL(becasue of 3),
> migrate_page_remove_references() fails.

If page->mapping would be NULL then migrate_page() could not 
have been called. The mapping is used to obtain the address of the 
function to call,
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux