Commit d14e1589 by Tycho Andersen Committed by Stéphane Graber

c/r: check for criu images in the checkpoint directory

CRIU can get confused if there are two dumps that are written to the same directory, so we make some minimal effort to prevent people from doing this. This is a better alternative than forcing liblxc to create the directory, since it is mostly race free (and neither solution is bullet proof anyway if someone rsyncs some bad images over the top of the good ones). Signed-off-by: 's avatarTycho Andersen <tycho.andersen@canonical.com> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent 40ec5e3f
...@@ -3680,6 +3680,7 @@ static bool do_lxcapi_checkpoint(struct lxc_container *c, char *directory, bool ...@@ -3680,6 +3680,7 @@ static bool do_lxcapi_checkpoint(struct lxc_container *c, char *directory, bool
{ {
pid_t pid; pid_t pid;
int status; int status;
char path[PATH_MAX];
if (!criu_ok(c)) if (!criu_ok(c))
return false; return false;
...@@ -3687,6 +3688,15 @@ static bool do_lxcapi_checkpoint(struct lxc_container *c, char *directory, bool ...@@ -3687,6 +3688,15 @@ static bool do_lxcapi_checkpoint(struct lxc_container *c, char *directory, bool
if (mkdir(directory, 0700) < 0 && errno != EEXIST) if (mkdir(directory, 0700) < 0 && errno != EEXIST)
return false; return false;
status = snprintf(path, sizeof(path), "%s/inventory.img", directory);
if (status < 0 || status >= sizeof(path))
return false;
if (access(path, F_OK) == 0) {
ERROR("please use a fresh directory for the dump directory\n");
return false;
}
if (!dump_net_info(c, directory)) if (!dump_net_info(c, directory))
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment