From: Stéphane Graber Date: Tue, 30 Nov 2021 22:39:34 +0000 (-0500) Subject: Revert "api: ->save_config() doesn't need to create container dir" X-Git-Tag: lxc-4.0.12~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0dd3258bddc1eb55fe2d4f4bbe8bf629cdff87eb;p=thirdparty%2Flxc.git Revert "api: ->save_config() doesn't need to create container dir" This reverts commit 2fde07c3990fe09925699da5d9a1762eb279c497. We need to investigate this in more detail but this commit is breaking LXD, causing startup to fail with: lxc foo 20211130202833.906 INFO conf - conf.c:run_script_argv:336 - Executing script "/bin/mount -t shiftfs -o passthrough=3 "/lxc-ci/build/tmp.WemmpzWGYz/go/src/github.com/lxc/lxd/test/tmp.Cli/0To/containers/foo/rootfs" "/lxc-ci/build/tmp.WemmpzWGYz/go/src/github.com/lxc/lxd/test/tmp.Cli/0To/containers/foo/rootfs"" for container "foo" lxc foo 20211130202833.912 ERROR conf - conf.c:run_buffer:321 - Script exited with status 32 lxc foo 20211130202833.912 ERROR conf - conf.c:lxc_setup_rootfs_prepare_root:3947 - Failed to run pre-mount hooks lxc foo 20211130202833.912 ERROR conf - conf.c:lxc_setup:4317 - Failed to setup rootfs lxc foo 20211130202833.912 ERROR start - start.c:do_start:1275 - Failed to setup container "foo" Not entirely sure why we're seeing things blow up as the directory definitely exists (and contains a valid rootfs) but this was caused by today's liblxc update. Signed-off-by: Stéphane Graber --- diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index b83264f7c..96fdb3fd2 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -2608,6 +2608,12 @@ static bool do_lxcapi_save_config(struct lxc_container *c, const char *alt_file) int fd, lret; bool ret = false, need_disklock = false; + if (!alt_file) + alt_file = c->configfile; + + if (!alt_file) + return false; + /* If we haven't yet loaded a config, load the stock config. */ if (!c->lxc_conf) { if (!do_lxcapi_load_config(c, lxc_global_config_value("lxc.default_config"))) { @@ -2619,13 +2625,7 @@ static bool do_lxcapi_save_config(struct lxc_container *c, const char *alt_file) } } - if (!alt_file) { - alt_file = c->configfile; - if (!create_container_dir(c)) - return false; - } - - if (!alt_file) + if (!create_container_dir(c)) return false; /* If we're writing to the container's config file, take the disk lock.