[CRIU] [PATCH 2/5] uffd: Relax reading the pstree image

Mike Rapoport mike.rapoport at gmail.com
Mon Nov 21 04:46:18 PST 2016


On Mon, Nov 21, 2016 at 02:26:26PM +0300, Pavel Emelyanov wrote:
> The uffd code only needs the pstree items themselves, not
> any IDs and relations they might have.

Maybe this is the point where we'd want to fork() lazy-pages from
cr-restore?
 
> Signed-off-by: Pavel Emelyanov <xemul at virtuozzo.com>
> ---
>  criu/include/pstree.h | 1 +
>  criu/pstree.c         | 2 +-
>  criu/uffd.c           | 4 +++-
>  3 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/criu/include/pstree.h b/criu/include/pstree.h
> index 5768b64..71fd696 100644
> --- a/criu/include/pstree.h
> +++ b/criu/include/pstree.h
> @@ -85,6 +85,7 @@ extern struct pstree_item *pstree_item_next(struct pstree_item *item);
>  
>  extern bool restore_before_setsid(struct pstree_item *child);
>  extern int prepare_pstree(void);
> +extern int read_pstree_image(pid_t *pid_max);
>  
>  extern int dump_pstree(struct pstree_item *root_item);
>  
> diff --git a/criu/pstree.c b/criu/pstree.c
> index 943518d..bc58b38 100644
> --- a/criu/pstree.c
> +++ b/criu/pstree.c
> @@ -472,7 +472,7 @@ static int read_pstree_ids(struct pstree_item *pi)
>  	return 0;
>  }
>  
> -static int read_pstree_image(pid_t *pid_max)
> +int read_pstree_image(pid_t *pid_max)
>  {
>  	int ret = 0, i;
>  	struct cr_img *img;
> diff --git a/criu/uffd.c b/criu/uffd.c
> index f3b4f4a..2d09e66 100644
> --- a/criu/uffd.c
> +++ b/criu/uffd.c
> @@ -790,6 +790,8 @@ out:
>  
>  static int lazy_pages_prepare_pstree(void)
>  {
> +	pid_t dummy = 0;
> +
>  	if (check_img_inventory() == -1)
>  		return -1;
>  
> @@ -797,7 +799,7 @@ static int lazy_pages_prepare_pstree(void)
>  	if (prepare_task_entries() == -1)
>  		return -1;
>  
> -	if (prepare_pstree() == -1)
> +	if (read_pstree_image(&dummy) == -1)
>  		return -1;
>  
>  	return 0;
> -- 
> 2.5.0
> 


More information about the CRIU mailing list