[CRIU] [PATCH] criu: pagemap-cache -- Fix map filling in greedy mode

Andrey Vagin avagin at virtuozzo.com
Mon May 2 10:09:13 PDT 2016


Acked-by: Andrew Vagin <avagin at openvz.org>

On Fri, Apr 29, 2016 at 09:14:08PM +0300, Cyrill Gorcunov wrote:
> Reported-by: Andrew Vagin <avagin at openvz.org>
> Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
> ---
>  criu/pagemap-cache.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/criu/pagemap-cache.c b/criu/pagemap-cache.c
> index c2e467b673be..e38bc3fb6b16 100644
> --- a/criu/pagemap-cache.c
> +++ b/criu/pagemap-cache.c
> @@ -7,6 +7,7 @@
>  #include "util.h"
>  #include "log.h"
>  #include "vma.h"
> +#include "mem.h"
>  #include "kerndat.h"
>  
>  #undef	LOG_PREFIX
> @@ -131,12 +132,16 @@ static int pmc_fill_cache(pmc_t *pmc, const struct vma_area *vma)
>  	BUG_ON(pmc->map_len < size_map);
>  
>  	if (unlikely(pmc->fd < 0)) {
> +		u64 pme = PME_PRESENT;
> +		size_t i;
> +
>  		/*
>  		 * We don't have access to the dumpee pagemap so fill
>  		 * everything as present. It's better than refuse
>  		 * to dump because it simply disables optimisation.
>  		 */
> -		memset(pmc->map, 1, size_map);
> +		for (i = 0; i < (size_map / sizeof(pme)); i++)
> +			pmc->map[i] = pme;
>  	} else {
>  		if (pread(pmc->fd, pmc->map, size_map, PAGEMAP_PFN_OFF(pmc->start)) != size_map) {
>  			pmc_zap(pmc);
> -- 
> 2.5.5
> 


More information about the CRIU mailing list