[CRIU] [PATCH] pagemap: add an ability to disable pagemap cache

Cyrill Gorcunov gorcunov at gmail.com
Wed Aug 24 12:23:14 PDT 2016


On Wed, Aug 24, 2016 at 10:17:06PM +0300, Andrei Vagin wrote:
> From: Andrei Vagin <avagin at virtuozzo.com>
> 
> We found that the 3.19 Ubuntu kernel has a bug and
> the pagemap cache doesn't work properly on this kernel.
> 
> Unfortunately Travis-CI allows to create intancies only with this kernel,
> so we need to add this workaround.
> 
> https://github.com/xemul/criu/issues/207
> 
> Cc: Cyrill Gorcunov <gorcunov at openvz.org>
> Cc: Dmitry Safonov <dsafonov at virtuozzo.com>
> Signed-off-by: Andrei Vagin <avagin at virtuozzo.com>
> ---
> @@ -107,7 +117,8 @@ static int pmc_fill_cache(pmc_t *pmc, const struct vma_area *vma)
>  	 * The benefit (apart redusing the number of read() calls)
>  	 * is to walk page tables less.
>  	 */
> -	if (len < PMC_SIZE && (vma->e->start - low) < PMC_SIZE_GAP) {
> +	if (!pagemap_cache_disabled &&
> +            len < PMC_SIZE && (vma->e->start - low) < PMC_SIZE_GAP) {
>  		size_t size_cov = len;
>  		size_t nr_vmas = 1;
>  
> @@ -174,3 +185,8 @@ void pmc_fini(pmc_t *pmc)
>  	xfree(pmc->map);
>  	pmc_reset(pmc);
>  }

Wait. I don't understand this moment. If pagemap_cache_disabled then
we need to fill pagecache with present values, so criu would dump
all the pages?


More information about the CRIU mailing list