
On Tue, Apr 07, 2015 at 04:29:42PM +0200, Lubomir Rintel wrote:
Hi Cedric,
On Tue, 2015-04-07 at 16:18 +0200, Cedric Bosdonnat wrote:
Hello Lubomir
On Tue, 2015-04-07 at 15:37 +0200, Lubomir Rintel wrote:
/var/run may reside on a tmpfs and we fail to create the PID file if /var/run/lxc does not exist.
Just mentioning the fact that this folder may not exist is OK. We have the same problem right after the libvirt installation too when creating an lxc domain.
Other drivers (well, BHYVE) seem to do the same thing.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> --- src/lxc/lxc_driver.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 245000d..4363898 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1648,6 +1648,20 @@ static int lxcStateInitialize(bool privileged, if (!(caps = virLXCDriverGetCapabilities(lxc_driver, false))) goto cleanup;
+ if (virFileMakePath(LXC_LOG_DIR) < 0) { + virReportSystemError(errno, + _("Failed to mkdir %s"), + LXC_LOG_DIR); + goto cleanup; + }
Isn't that one automatically created so far?
Yes, logDir is created by lxcProcessStart
Not sure really. I didn't run into any problems with this one, just noticed that BYHIVE creates it upon start and I didn't see LXC doing that...
+ + if (virFileMakePath(LXC_STATE_DIR) < 0) {
I'ld rather use lxc_driver->config->stateDir instead LXC_STATE_DIR. I wrote a patch for that this morning and was about to email it ;)
And using cfg->stateDir is nicer, even though LXC domains can be only started by a privileged daemon so it's always filled with the compiled-in value.
Well, I don't really know.
I was thinking that maybe virPidFileWritePath() should create the path when needed, analogously to virPidFileWrite(), but creating it on start seemed a bit more consostent and less laborous.
Oddly enough, virDomainSaveState does auto-create the directory, but we can only get there after we've successfully run a domain. Jan