[libvirt] [PATCH] lxc: create the required directories upon driver start

Ján Tomko jtomko at redhat.com
Wed Apr 8 16:00:15 UTC 2015


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 at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150408/131f7eb6/attachment-0001.sig>


More information about the libvir-list mailing list