On 30 Jul 2019, at 11:38, Daniel P. Berrangé
<berrange(a)redhat.com> wrote:
On Tue, Jul 30, 2019 at 11:05:25AM +0200, Christophe de Dinechin wrote:
>
> Daniel P. Berrangé writes:
>
>> This is what all the driver refactoring I've done has been about
>> enabling.
>>
>> We gain new daemons for each driver, for the primary virt drivers:
>>
>> virtlibxld
>
> virtxend?
>
>> virtlxcd
>> virtqemud
>> virtvboxd
>> virtvzd
>>
>> And again for the secondary drivers
>>
>> virtinterfaced
>> virtnetworkd
>> virtnodedevd
>> virtnwfilterd
>> virtsecretd
>> virtstoraged
>>
>> Finally to support IP connectivity, and also the legacy lbivirtd UNIX
>> domain socket (for the old libvirt remote driver SSH tunnelling):
>>
>> virtproxyd
>>
>> The the sake of facilitating upgrades, the existing libvirtd still
>> exists and works the same way it always has.
>>
>> You either run libvirtd, or you run the per-driver daemons, never both.
>
> What happens if you run both?
> (I'll try to figure out by reviewing the rest of the code and/or testing)
The drivers acquire an exclusive lock, causing the 2nd daemon to fail
to startup
$ ./src/libvirtd &
$ ./src/virtqemud
2019-07-30 09:36:34.339+0000: 22809: info : libvirt version: 5.6.0
2019-07-30 09:36:34.339+0000: 22809: info : hostname:
dhcp-16-132.lcy.redhat.com
2019-07-30 09:36:34.339+0000: 22809: error : virPidFileAcquirePath:376 : Failed to
acquire pid file '/run/user/501/libvirt/qemu/run/driver.pid': Resource temporarily
unavailable
2019-07-30 09:36:34.339+0000: 22809: error : virStateInitialize:688 : Initialisation of
QEMU state driver failed: Failed to acquire pid file
'/run/user/501/libvirt/qemu/run/driver.pid': Resource temporarily unavailable
2019-07-30 09:36:34.339+0000: 22809: error : daemonRunStateInit:821 : Driver state
initialisation failed
The same works the other way around too
$ ./src/virtqemud &
$ ./src/libvirtd
2019-07-30 09:37:45.398+0000: 23109: info : libvirt version: 5.6.0
2019-07-30 09:37:45.398+0000: 23109: info : hostname:
dhcp-16-132.lcy.redhat.com
2019-07-30 09:37:45.398+0000: 23109: error : virPidFileAcquirePath:376 : Failed to
acquire pid file '/run/user/501/libvirt/qemu/run/driver.pid': Resource temporarily
unavailable
2019-07-30 09:37:45.398+0000: 23109: error : virStateInitialize:688 : Initialisation of
QEMU state driver failed: Failed to acquire pid file
'/run/user/501/libvirt/qemu/run/driver.pid': Resource temporarily unavailable
2019-07-30 09:37:45.398+0000: 23109: error : daemonRunStateInit:821 : Driver state
initialisation failed
the systemd unit files also have Conflicts rules which should prevent
even getting that far
Thanks for testing. But that can only work for one deamon which shares the lock file
name with libvirtd. What about the other drivers? I guess they can’t all share the
same lock file, or I missed something big in the design.
(Sorry, still reviewing, so did not really have time to try it yet)