On 05/27/2013 02:12 PM, Andrey Vagin wrote:
transmit pair of veth names to criu via the option --veth-pair
v2: unset IFS and delete eval from vps-rst
Signed-off-by: Andrey Vagin <ava...@openvz.org>
---
scripts/vps-rst.in | 15 +++++++++++++--
src/lib/hooks_ct.c | 18 ++++++++++++++----
2 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/scripts/vps-rst.in b/scripts/vps-rst.in
index b6c2f84..629b1b3 100755
--- a/scripts/vps-rst.in
+++ b/scripts/vps-rst.in
@@ -25,15 +25,24 @@
# VE_ROOT - container root directory
# VE_DUMP_DIR - directory for saving dump files
# VE_STATE_FILE - file to write CT init PID to
+# VE_VETH_DEVS - pair of veth names (CT=HW\n)
exec 1>&2
. @SCRIPTDIR@/vps-functions
+veth_args=
+IFS="
+"
Why do you need to set IFS at all? Default IFS is space, tab and newline.
Are you implying that device names can contain spaces or tabs? I haven't
see any.
+for dev in $VE_VETH_DEVS; do
+ veth_args="$veth_args --veth-pair $dev"
+done
+unset IFS
+
vzcheckvar VE_ROOT
vzcheckvar VE_STATE_FILE
vzcheckvar VE_DUMP_DIR
-criu restore --file-locks \
+criu restore --file-locks \
--tcp-established \
--evasive-devices \
--link-remap \
@@ -42,7 +51,9 @@ criu restore --file-locks \
-D $VE_DUMP_DIR \
-o restore.log \
-vvvv \
- --pidfile $VE_STATE_FILE
+ --pidfile $VE_STATE_FILE\
a whitespace before \ would be nice
+ $veth_args
+
if [ $? -eq 0 ]; then
rm -rf $VE_DUMP_DIR
else
diff --git a/src/lib/hooks_ct.c b/src/lib/hooks_ct.c
index 21e6823..1580b8e 100644
--- a/src/lib/hooks_ct.c
+++ b/src/lib/hooks_ct.c
@@ -921,14 +921,15 @@ static int ct_chkpnt(vps_handler *h, envid_t veid,
return ret;
}
-static int ct_restore_fn(vps_handler *h, envid_t veid, const fs_param *fs,
+static int ct_restore_fn(vps_handler *h, envid_t veid, const vps_res *res,
int wait_p, int old_wait_p, int err_p, void *data)
This belongs to the patch #1, right?
{
- char *argv[2], *env[4];
+ char *argv[2], *env[5];
const char *dumpfile = NULL;
const char *statefile = NULL;
cpt_param *param = data;
- char buf[STR_SIZE];
+ veth_dev *veth;
+ char buf[STR_SIZE], *pbuf;
pid_t pid = -1;
int ret;
FILE *sfile;
@@ -948,7 +949,16 @@ static int ct_restore_fn(vps_handler *h, envid_t veid,
const fs_param *fs,
env[1] = strdup(buf);
snprintf(buf, sizeof(buf), "VE_STATE_FILE=%s", statefile);
env[2] = strdup(buf);
- env[3] = NULL;
+
+ pbuf = buf;
+ pbuf += snprintf(buf, sizeof(buf), "VE_VETH_DEVS=");;
double ;; detected
+ list_for_each(veth, &res->veth.dev, list) {
+ pbuf += snprintf(pbuf, sizeof(buf) - (pbuf - buf),
+ "%s=%s\n", veth->dev_name_ve, veth->dev_name);
+ }
+ env[3] = strdup(buf);
+
+ env[4] = NULL;
ret = run_script(argv[0], argv, env, 0);
free_arg(env);
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel