From 1a16b60075a5450152fd76d0f67a99c645c40c49 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Wed, 18 Jan 2017 12:02:04 +0300 Subject: [PATCH] action-scripts: Add "pre-resume" stage 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. We can't reuse ACT_POST_RESTORE action or move it because we can kill the restored processes here and resume them on a source side as avagin@ explained. [ xemul: In between POST_RESTORE and PRE_RESUME ghost files are cleaned up (an a little bit more), so two separate stages are required and the latter one cannot fail. ] travis-ci: success for Add "pre-resume" stage Signed-off-by: Cyrill Gorcunov Signed-off-by: Pavel Emelyanov --- 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 bfa1f827a..e3027bd2e 100644 --- a/criu/action-scripts.c +++ b/criu/action-scripts.c @@ -23,6 +23,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", }; diff --git a/criu/cr-restore.c b/criu/cr-restore.c index 4f72977f3..93289c4ec 100644 --- a/criu/cr-restore.c +++ b/criu/cr-restore.c @@ -1843,6 +1843,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 2e3b25ea3..4421169fd 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_MAX };