On Mon, Aug 19, 2019 at 12:35:15PM +0000, Allen, John wrote:
On Mon, Aug 19, 2019 at 01:30:06PM +0100, Daniel P. Berrangé wrote:
> On Mon, Aug 19, 2019 at 12:15:48PM +0000, Allen, John wrote:
> > On Mon, Aug 19, 2019 at 12:24:43PM +0100, Daniel P. Berrangé wrote:
> > > On Wed, Aug 14, 2019 at 01:30:26PM +0000, Allen, John wrote:
> > > > After upgrading to v5.6.0, starting libvirtd fails with the following
message
> > > > in journalctl -xe:
> > > >
> > > > libvirtd[186338]: internal error: Some activation file descriptors
are unclaimed
> > > >
> > > > 5b8569dd6e284b9159c701e8bffafb196983fc4a introduces the message. The
commit
> > > > message indicates that systemd version 227 is required, but my system
seems to
> > > > be running version 237.
> > > >
> > > > Is this a known issue? Is there any other configuration for systemd
needed to
> > > > avoid the problem?
> > >
> > > Can you tell me what operating system you are seeing this on ?
> >
> > This is on Ubuntu 18.04.2
> >
> > >
> > > Also, can you confirm that you're using the stock unit files that
libvirt
> > > distributes, with no local customizations ?
> >
> > As far as I'm aware there are no modifications to the unit file. I
produced
> > the problem by just pulling libvirt 5.6.0 and running:
> >
> > ./autogen.sh --system
> > make
> > make install
> > service libvirtd start
>
> Ok, I'll try to reproduce myself.
>
> One other question - did you have the official Ubuntu libvirt packages
> installed at the time you did "make install", or did you uninstall them
> first ?
Initially, I had installed over the ubuntu libvirt packages. However, I
suspected that something may have "lingered" from the distro packages causing
the issue, but I was able to produce the issue on a fresh install with no
ubuntu libvirt packages installed as well.
I think I understand what's happening now.
Libvirt creates the libvirtd.socket unit file using a path of
/var/run/libvirt/libvirt-sock
But /var/run is a symlink to /run, and IIUC, systemd will (helpfully?)
change the socket path we specify to be /run/libvirt/libvirt-sock
When libvirtd receives the activation FDs it calls getsockname() to
find out the path associated with the socket and so sees
/run/libvirt/libvirt-sock, but libvirt was expecting to instead
see the path it had requested /var/run/libvirt/libvirt-sock
If this theory is correct, then you should be able to workaround the
problem by editting /etc/libvirt/libvirtd.conf and setting
unix_sock_dir = "/run/libvirt"
Can you confirm it that works for you ?
I'll assume it will, and thus work on a real long term fix for the it.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|