[CRIU] [PATCH 1/3] cr-restore: "post-resume" hook introduced

Andrew Vagin avagin at virtuozzo.com
Wed Apr 6 07:36:25 PDT 2016


On Wed, Apr 06, 2016 at 12:01:48PM +0300, Stanislav Kinsburskiy wrote:
> This hook is called at the very end, when everything is restored and processes
> were resumed.
> Can be used for some actions, which require operation container, like
> restarting of systemd autofs services.
> 
> Signed-off-by: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
> ---
>  criu/action-scripts.c         |    1 +
>  criu/cr-restore.c             |    4 ++++
>  criu/include/action-scripts.h |    1 +
>  criu/mount.c                  |    1 +
>  4 files changed, 7 insertions(+)
> 
> diff --git a/criu/action-scripts.c b/criu/action-scripts.c
> index 05aa9d0..b1f7952 100644
> --- a/criu/action-scripts.c
> +++ b/criu/action-scripts.c
> @@ -20,6 +20,7 @@ static const char *action_names[ACT_MAX] = {
>  	[ ACT_NET_UNLOCK ]	= "network-unlock",
>  	[ ACT_SETUP_NS ]	= "setup-namespaces",
>  	[ ACT_POST_SETUP_NS ]	= "post-setup-namespaces",
> +	[ ACT_POST_RESUME ]	= "post-resume",
>  };
>  
>  int run_scripts(enum script_actions act)
> diff --git a/criu/cr-restore.c b/criu/cr-restore.c
> index 0720c07..2b11b71 100644
> --- a/criu/cr-restore.c
> +++ b/criu/cr-restore.c
> @@ -2198,6 +2198,10 @@ static int restore_root_task(struct pstree_item *init)
>  	if (!opts.restore_detach && !opts.exec_cmd)
>  		wait(NULL);

Here we are waiting when the root if opts.restore_detach isn't set. If
we passed this code, this means that the root task completed.

ACT_POST_RESUME should be called before waiting the root task.

>  
> +	ret = run_scripts(ACT_POST_RESUME);
> +	if (ret != 0)
> +		pr_err("Post-resume script ret code %d\n", ret);
> +
>  	return 0;
>  
>  out_kill:
> diff --git a/criu/include/action-scripts.h b/criu/include/action-scripts.h
> index 8ffc2c5..4ab5d6d 100644
> --- a/criu/include/action-scripts.h
> +++ b/criu/include/action-scripts.h
> @@ -18,6 +18,7 @@ enum script_actions {
>  	ACT_NET_UNLOCK		= 5,
>  	ACT_SETUP_NS		= 6,
>  	ACT_POST_SETUP_NS	= 7,
> +	ACT_POST_RESUME		= 8,
>  
>  	ACT_MAX
>  };
> diff --git a/criu/mount.c b/criu/mount.c
> index 7b698cf..5cb26ce 100644
> --- a/criu/mount.c
> +++ b/criu/mount.c
> @@ -2483,6 +2483,7 @@ do_bind:
>  
>  	if (mount(root, mi->mountpoint, NULL, MS_BIND, NULL) < 0) {
>  		pr_perror("Can't mount at %s", mi->mountpoint);
> +		sleep(1000);
>  		goto err;
>  	}
>  
> 
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu


More information about the CRIU mailing list