Skip to content

Commit

Permalink
Merge pull request #906 from tych0/fix-console-none-migration
Browse files Browse the repository at this point in the history
Fix console none migration
  • Loading branch information
hallyn committed Mar 21, 2016
2 parents ecd852f + 97e4f1a commit f036e5c
Showing 1 changed file with 22 additions and 14 deletions.
36 changes: 22 additions & 14 deletions src/lxc/criu.c
Expand Up @@ -259,9 +259,10 @@ static void exec_criu(struct criu_opts *opts)
DECLARE_ARG("--freeze-cgroup");
DECLARE_ARG(log);

DECLARE_ARG("--ext-mount-map");
DECLARE_ARG("/dev/console:console");
if (opts->tty_id[0]) {
DECLARE_ARG("--ext-mount-map");
DECLARE_ARG("/dev/console:console");

DECLARE_ARG("--external");
DECLARE_ARG(opts->tty_id);
}
Expand Down Expand Up @@ -289,6 +290,11 @@ static void exec_criu(struct criu_opts *opts)
DECLARE_ARG(opts->cgroup_path);

if (tty_info[0]) {
if (opts->console_fd < 0) {
ERROR("lxc.console configured on source host but not target");
goto err;
}

ret = snprintf(buf, sizeof(buf), "fd[%d]:%s", opts->console_fd, tty_info);
if (ret < 0 || ret >= sizeof(buf))
goto err;
Expand Down Expand Up @@ -623,20 +629,22 @@ void do_restore(struct lxc_container *c, int status_pipe, char *directory, bool
os.cgroup_path = cgroup_canonical_path(handler);
os.console_fd = c->lxc_conf->console.slave;

/* Twiddle the FD_CLOEXEC bit. We want to pass this FD to criu
* via --inherit-fd, so we don't want it to close.
*/
flags = fcntl(os.console_fd, F_GETFD);
if (flags < 0) {
SYSERROR("F_GETFD failed");
goto out_fini_handler;
}
if (os.console_fd >= 0) {
/* Twiddle the FD_CLOEXEC bit. We want to pass this FD to criu
* via --inherit-fd, so we don't want it to close.
*/
flags = fcntl(os.console_fd, F_GETFD);
if (flags < 0) {
SYSERROR("F_GETFD failed: %d", os.console_fd);
goto out_fini_handler;
}

flags &= ~FD_CLOEXEC;
flags &= ~FD_CLOEXEC;

if (fcntl(os.console_fd, F_SETFD, flags) < 0) {
SYSERROR("F_SETFD failed");
goto out_fini_handler;
if (fcntl(os.console_fd, F_SETFD, flags) < 0) {
SYSERROR("F_SETFD failed");
goto out_fini_handler;
}
}
os.console_name = c->lxc_conf->console.name;

Expand Down

0 comments on commit f036e5c

Please sign in to comment.