To make transition of containers between nodes shoveless we provide offsets for monotonic clocks. The kernel use these values to zap the time difference between nodes when setups timers. So that we need to save these values somewhere in images and set them up back on restore procedure.
Ideally this should be implemened via CRIU directly with custom cgroups properties engine but until done we may carry the settings with libvzctl directly, just like we do for coredump patterns. Thus -- checkpoint @ve.clock_bootbased and @ve.clock_monotonic properties into image and restore them back. https://jira.sw.ru/browse/PSBM-41406 https://jira.sw.ru/browse/PSBM-45631 Signed-off-by: Cyrill Gorcunov <gorcu...@openvz.org> --- scripts/vz-cpt.in | 10 ++++++++++ scripts/vz-rst-action.in | 4 +++- scripts/vz-rst.in | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/scripts/vz-cpt.in b/scripts/vz-cpt.in index 44982e1..8ecb33b 100755 --- a/scripts/vz-cpt.in +++ b/scripts/vz-cpt.in @@ -45,7 +45,17 @@ done # simply increase the number of file descriptors allowed. ulimit -n 8192 +function cg_dump_props { + if [ -n "$VEID" ]; then + # Save monotonic offsets for next restore + cgget -n -v -r ve.clock_bootbased $VEID > $1/vz_clock_bootbased.img + cgget -n -v -r ve.clock_monotonic $VEID > $1/vz_clock_monotonic.img + fi + return 0 +} + mkdir -p $dumpdir && +cg_dump_props $dumpdir && criu dump -vvvv -o dump.log \ --file-locks \ --tcp-established \ diff --git a/scripts/vz-rst-action.in b/scripts/vz-rst-action.in index 4083b88..8c7f9b2 100755 --- a/scripts/vz-rst-action.in +++ b/scripts/vz-rst-action.in @@ -68,7 +68,9 @@ case "$CRTOOLS_SCRIPT_ACTION" in ln -s /proc/$pid/ns/net $VE_NETNS_FILE if [ -n "$VEID" ]; then - cgset -r ve.state="START $pid" $VEID || exit + [ -n "$VE_CLOCK_BOOTBASED" ] && cgset -r ve.clock_bootbased="$VE_CLOCK_BOOTBASED" $VEID + [ -n "$VE_CLOCK_MONOTONIC" ] && cgset -r ve.clock_monotonic="$VE_CLOCK_MONOTONIC" $VEID + cgset -r ve.state="START $pid" $VEID || exit cgset -r ve.pseudosuper="0" $VEID fi ;; diff --git a/scripts/vz-rst.in b/scripts/vz-rst.in index 78884da..9ef5c56 100755 --- a/scripts/vz-rst.in +++ b/scripts/vz-rst.in @@ -57,6 +57,12 @@ extra_args_path="$VE_DUMP_DIR/restore-extra-args" # Setup default work directory if not explicitly specified [ -z "$VE_WORK_DIR" ] && VE_WORK_DIR="$VE_DUMP_DIR" +# Setup monotonic offsets for clock adjustments +if [ -n "$VEID" ]; then + export VE_CLOCK_BOOTBASED=`cat $VE_DUMP_DIR/vz_clock_bootbased.img` + export VE_CLOCK_MONOTONIC=`cat $VE_DUMP_DIR/vz_clock_monotonic.img` +fi + # Setup default log name if not explicitly specified [ -z "$VE_RESTORE_LOG_PATH" ] && VE_RESTORE_LOG_PATH="restore.log" -- 2.5.5 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel