[Devel] [PATCH criu 2/6] action-scripts: Add "pre-resume" stage

Andrey Vagin avagin at virtuozzo.com
Wed Feb 8 12:37:18 PST 2017


On Wed, Feb 08, 2017 at 12:05:37AM +0300, Cyrill Gorcunov wrote:
> The main idea is to be able to operate with container
> at the moment where its processess and resources are
> already restored but the processes are not yet in
> running state, ie just before we kick them.
> 
> Beside the need of tuning up beancounters (which is vz7
> specific feature) this might be useful to make some
> additional debug tests from the script.

What do we have to do, if we failed to tuning up beancounters.
At this moment, we can't resume a container on a source host,
because its network was already unlocked...

> 
> We can't reuse ACT_POST_RESUME action or move it because
> we can kill the restored processes in post-resume stage
> and resume them on source side as avagin@ explained.
> 
> https://jira.sw.ru/browse/PSBM-58742
> 
> Signed-off-by: Cyrill Gorcunov <gorcunov at virtuozzo.com>
> ---
>  criu/action-scripts.c         | 1 +
>  criu/cr-restore.c             | 4 ++++
>  criu/include/action-scripts.h | 1 +
>  3 files changed, 6 insertions(+)
> 
> diff --git a/criu/action-scripts.c b/criu/action-scripts.c
> index 380b05a..1dd6bb2 100644
> --- a/criu/action-scripts.c
> +++ b/criu/action-scripts.c
> @@ -24,6 +24,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_PRE_RESUME ]	= "pre-resume",
>  	[ ACT_POST_RESUME ]	= "post-resume",
>  	[ ACT_POST_NET_LOCK ]	= "post-network-lock",
>  };
> diff --git a/criu/cr-restore.c b/criu/cr-restore.c
> index 2e84ed3..c3db8bd 100644
> --- a/criu/cr-restore.c
> +++ b/criu/cr-restore.c
> @@ -1948,6 +1948,10 @@ static int restore_root_task(struct pstree_item *init)
>  	if (ret == 0)
>  		finalize_restore();
>  
> +	ret = run_scripts(ACT_PRE_RESUME);
> +	if (ret)
> +		pr_err("Pre-resume script ret code %d\n", ret);
> +
>  	if (restore_freezer_state())
>  		pr_err("Unable to restore freezer state\n");
>  
> diff --git a/criu/include/action-scripts.h b/criu/include/action-scripts.h
> index e49f57c..13fd011 100644
> --- a/criu/include/action-scripts.h
> +++ b/criu/include/action-scripts.h
> @@ -11,6 +11,7 @@ enum script_actions {
>  	ACT_SETUP_NS,
>  	ACT_POST_SETUP_NS,
>  	ACT_POST_RESUME,
> +	ACT_PRE_RESUME,
>  	ACT_POST_NET_LOCK,
>  
>  	ACT_MAX
> -- 
> 2.7.4
> 


More information about the Devel mailing list