[CRIU] [PATCHv1 1/2] restorer: implement restore of ps tree in stopped state

Andrew Vagin avagin at virtuozzo.com
Mon May 16 11:48:03 PDT 2016


On Mon, May 02, 2016 at 06:46:05PM +0300, Eugene Batalov wrote:
> From: Kravchenko Dmitrii <equivalence1 at gmail.com>
> 
> This patch adds implementation of --leave-stopped option
> to CRIU restore cmd. If --leave-stopped is passed then
> each process in ps tree gets SIGSTOP before detaching
> from it.
> 
> Signed-off-by: Kravchenko Dmitrii <equivalence1 at gmail.com>
> Signed-off-by: Eugene Batalov <eabatalov89 at gmail.com>
> ---
>  criu/cr-restore.c |  3 ++-
>  criu/crtools.c    | 10 ++++++++++
>  2 files changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/criu/cr-restore.c b/criu/cr-restore.c
> index ac0943b..d212abe 100644
> --- a/criu/cr-restore.c
> +++ b/criu/cr-restore.c
> @@ -1924,7 +1924,8 @@ static void finalize_restore(void)
>  
>  		xfree(ctl);
>  
> -		if (item->pid.state == TASK_STOPPED)
> +		if ((item->pid.state == TASK_STOPPED) ||
> +				(opts.final_state == TASK_STOPPED))
>  			kill(item->pid.real, SIGSTOP);
>  	}
>  }
> diff --git a/criu/crtools.c b/criu/crtools.c
> index 7a0f977..be33f4c 100644
> --- a/criu/crtools.c
> +++ b/criu/crtools.c
> @@ -688,6 +688,16 @@ int main(int argc, char *argv[], char *envp[])
>  			return 1;
>  	}
>  
> +	/*
> +	 * When a process group becomes an orphan,
> +	 * its processes are sent a SIGHUP signal
> +	 */
> +	if (!strcmp(argv[optind], "restore") &&
> +			opts.restore_detach &&
> +			opts.final_state == TASK_STOPPED &&
> +			opts.shell_job)
> +		pr_warn("Stopped and detached shell job will get SIGHUP from OS.");

Why does this specific for TASK_STOPPED?
> +
>  	if (chdir(work_dir)) {
>  		pr_perror("Can't change directory to %s", work_dir);
>  		return 1;
> -- 
> 1.9.1
> 
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu


More information about the CRIU mailing list