Commit 2322903b by Serge Hallyn Committed by Stéphane Graber

execute: bind init.lxc.static into container

Changelog: May 19: put init.lxc.static into container's root dir rather than under SBINDIR [stgraber]. Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com> Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
parent 2d4b3e3d
...@@ -3811,6 +3811,43 @@ static void remount_all_slave(void) ...@@ -3811,6 +3811,43 @@ static void remount_all_slave(void)
free(line); free(line);
} }
void lxc_execute_bind_init(struct lxc_conf *conf)
{
int ret;
char path[PATH_MAX], destpath[PATH_MAX];
ret = snprintf(path, PATH_MAX, SBINDIR "/init.lxc.static");
if (ret < 0 || ret >= PATH_MAX) {
WARN("Path name too long searching for lxc.init.static");
return;
}
if (!file_exists(path)) {
INFO("%s does not exist on host", path);
return;
}
ret = snprintf(destpath, PATH_MAX, "%s%s", conf->rootfs.mount, "/init.lxc.static");
if (ret < 0 || ret >= PATH_MAX) {
WARN("Path name too long for container's lxc.init.static");
return;
}
if (!file_exists(destpath)) {
FILE * pathfile = fopen(destpath, "wb");
if (!pathfile) {
SYSERROR("Failed to create mount target '%s'", destpath);
return;
}
fclose(pathfile);
}
ret = mount(path, destpath, "none", MS_BIND, NULL);
if (ret < 0)
SYSERROR("Failed to bind lxc.init.static into container");
INFO("lxc.init.static bound into container at %s", path);
}
/* /*
* This does the work of remounting / if it is shared, calling the * This does the work of remounting / if it is shared, calling the
* container pre-mount hooks, and mounting the rootfs. * container pre-mount hooks, and mounting the rootfs.
...@@ -3905,6 +3942,9 @@ int lxc_setup(struct lxc_handler *handler) ...@@ -3905,6 +3942,9 @@ int lxc_setup(struct lxc_handler *handler)
return -1; return -1;
} }
if (lxc_conf->is_execute)
lxc_execute_bind_init(lxc_conf);
/* now mount only cgroup, if wanted; /* now mount only cgroup, if wanted;
* before, /sys could not have been mounted * before, /sys could not have been mounted
* (is either mounted automatically or via fstab entries) * (is either mounted automatically or via fstab entries)
......
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