[CRIU] Combining pre-copy and post-copy

Mike Rapoport rppt at linux.vnet.ibm.com
Thu Jul 28 06:11:09 PDT 2016


On Wed, Jul 27, 2016 at 01:27:28PM +0200, Adrian Reber wrote:
> Thanks for getting the remote uffd support into criu-dev.
> 
> I am now looking at combining pre-copy and post-copy. Luckily there is
> for each pagemap entry the status if the page is in a parent checkpoint
> or not. Which makes it easier to decide if the page should be handled by
> uffd or not.
> 
> Unfortunately this information is not available in the restorer. The
> restorer only gets a list of VMAs and if the page should handled by uffd
> is decided by vma_entry_can_be_lazy()
> 
>         return ((e->flags & MAP_ANONYMOUS) &&
>                 (e->flags & MAP_PRIVATE) &&
>                 !(vma_entry_is(e, VMA_AREA_VDSO)) &&
>                 !(vma_entry_is(e, VMA_AREA_VSYSCALL)));
> 
> Which has no information about parents. What would be the best way to
> include the information if the page exists in a parent checkpoint and
> therefore should not be handled by uffd?

I think that the best way is to make restore and uffd use the information
in the pagemap to detect lazy and/or zero pages.
For instance, the restore_priv_vma_content function should skip the entire
lazy pagemap. And uffd initialization of relevant page sets should also
rely on the pagemap flags rather than on vma_entry_can_be_lazy().

> Does VmaEntry already know about parents? Or do we need a new flag?
> 
> 		Adrian
> 



More information about the CRIU mailing list