Commit 00ec333b by Serge Hallyn

pin_rootfs: be quiet and don't fail container start

It's a legitimate use case to use read-only $lxcpath. If we can't create the pin file, then we're not worried about marking the fs readonly on exit. Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
parent 9431aa65
......@@ -687,32 +687,23 @@ int pin_rootfs(const char *rootfs)
if (rootfs == NULL || strlen(rootfs) == 0)
return -2;
if (!realpath(rootfs, absrootfs)) {
INFO("failed to get real path for '%s', not pinning", rootfs);
if (!realpath(rootfs, absrootfs))
return -2;
}
if (access(absrootfs, F_OK)) {
SYSERROR("'%s' is not accessible", absrootfs);
if (access(absrootfs, F_OK))
return -1;
}
if (stat(absrootfs, &s)) {
SYSERROR("failed to stat '%s'", absrootfs);
if (stat(absrootfs, &s))
return -1;
}
if (!S_ISDIR(s.st_mode))
return -2;
ret = snprintf(absrootfspin, MAXPATHLEN, "%s%s", absrootfs, ".hold");
if (ret >= MAXPATHLEN) {
SYSERROR("pathname too long for rootfs hold file");
if (ret >= MAXPATHLEN)
return -1;
}
fd = open(absrootfspin, O_CREAT | O_RDWR, S_IWUSR|S_IRUSR);
INFO("opened %s as fd %d\n", absrootfspin, fd);
return fd;
}
......
......@@ -669,10 +669,8 @@ int lxc_spawn(struct lxc_handler *handler)
*/
handler->pinfd = pin_rootfs(handler->conf->rootfs.path);
if (handler->pinfd == -1) {
ERROR("failed to pin the container's rootfs");
goto out_delete_net;
}
if (handler->pinfd == -1)
INFO("failed to pin the container's rootfs");
/* Create a process in a new set of namespaces */
handler->pid = lxc_clone(do_start, handler, handler->clone_flags);
......
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