[libvirt] [PATCH 8/8] Removing probing of secondary drivers
Michal Privoznik
mprivozn at redhat.com
Wed Jan 21 10:21:32 UTC 2015
On 21.01.2015 11:15, Daniel P. Berrange wrote:
> On Wed, Jan 21, 2015 at 11:08:54AM +0100, Michal Privoznik wrote:
>> On 20.01.2015 17:37, Daniel P. Berrange wrote:
>>> For stateless, client side drivers, it is never correct to
>>> probe for secondary drivers. It is only ever appropriate to
>>> use the secondary driver that is associated with the
>>> hypervisor in question. As a result the ESX & HyperV drivers
>>> have both been forced to do hacks where they register no-op
>>> drivers for the ones they don't implement.
>>>
>>> For stateful, server side drivers, we always just want to
>>> use the same built-in shared driver. The exception is
>>> virtualbox which is really a stateless driver and so wants
>>> to use its own server side secondary drivers. To deal with
>>> this virtualbox has to be built as 3 separate loadable
>>> modules to allow registration to work in the right order.
>>>
>>> This can all be simplified by introducing a new struct
>>> recording the precise set of secondary drivers each
>>> hypervisor driver wants
>>>
>>> struct _virConnectDriver {
>>> virHypervisorDriverPtr hypervisorDriver;
>>> virInterfaceDriverPtr interfaceDriver;
>>> virNetworkDriverPtr networkDriver;
>>> virNodeDeviceDriverPtr nodeDeviceDriver;
>>> virNWFilterDriverPtr nwfilterDriver;
>>> virSecretDriverPtr secretDriver;
>>> virStorageDriverPtr storageDriver;
>>> };
>>>
>>> Instead of registering the hypervisor driver, we now
>>> just register a virConnectDriver instead. This allows
>>> us to remove all probing of secondary drivers. Once we
>>> have chosen the primary driver, we immediately know the
>>> correct secondary drivers to use.
>>>
>>> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
>>> ---
>>> daemon/libvirtd.c | 19 +-
>>> src/Makefile.am | 63 +------
>>> src/bhyve/bhyve_driver.c | 14 +-
>>> src/check-driverimpls.pl | 3 +-
>>> src/datatypes.c | 12 --
>>> src/driver-hypervisor.h | 3 -
>>> src/driver-interface.h | 9 -
>>> src/driver-network.h | 11 +-
>>> src/driver-nodedev.h | 8 +-
>>> src/driver-nwfilter.h | 13 +-
>>> src/driver-secret.h | 12 +-
>>> src/driver-storage.h | 12 +-
>>> src/driver.h | 54 +++---
>>> src/esx/esx_device_monitor.c | 74 --------
>>> src/esx/esx_device_monitor.h | 28 ---
>>> src/esx/esx_driver.c | 25 +--
>>> src/esx/esx_interface_driver.c | 37 +---
>>> src/esx/esx_interface_driver.h | 4 +-
>>> src/esx/esx_network_driver.c | 37 +---
>>> src/esx/esx_network_driver.h | 4 +-
>>> src/esx/esx_nwfilter_driver.c | 74 --------
>>> src/esx/esx_nwfilter_driver.h | 28 ---
>>> src/esx/esx_secret_driver.c | 72 -------
>>> src/esx/esx_secret_driver.h | 27 ---
>>> src/esx/esx_storage_driver.c | 37 +---
>>> src/esx/esx_storage_driver.h | 4 +-
>>> src/hyperv/hyperv_device_monitor.c | 71 -------
>>> src/hyperv/hyperv_device_monitor.h | 28 ---
>>> src/hyperv/hyperv_driver.c | 25 +--
>>> src/hyperv/hyperv_interface_driver.c | 71 -------
>>> src/hyperv/hyperv_interface_driver.h | 28 ---
>>> src/hyperv/hyperv_network_driver.c | 71 -------
>>> src/hyperv/hyperv_network_driver.h | 28 ---
>>> src/hyperv/hyperv_nwfilter_driver.c | 71 -------
>>> src/hyperv/hyperv_nwfilter_driver.h | 28 ---
>>> src/hyperv/hyperv_secret_driver.c | 71 -------
>>> src/hyperv/hyperv_secret_driver.h | 28 ---
>>> src/hyperv/hyperv_storage_driver.c | 71 -------
>>> src/hyperv/hyperv_storage_driver.h | 28 ---
>>> src/interface/interface_backend_netcf.c | 26 +--
>>> src/interface/interface_backend_udev.c | 25 +--
>>> src/libvirt.c | 323 ++++++++++++++------------------
>>> src/libvirt_private.syms | 14 +-
>>> src/libxl/libxl_driver.c | 10 +-
>>> src/lxc/lxc_driver.c | 10 +-
>>> src/network/bridge_driver.c | 25 +--
>>> src/node_device/node_device_driver.c | 10 +-
>>> src/node_device/node_device_hal.c | 26 +--
>>> src/node_device/node_device_udev.c | 23 +--
>>> src/nwfilter/nwfilter_driver.c | 25 +--
>>> src/openvz/openvz_driver.c | 12 +-
>>> src/phyp/phyp_driver.c | 64 +------
>>> src/qemu/qemu_driver.c | 10 +-
>>> src/remote/remote_driver.c | 152 ++-------------
>>> src/secret/secret_driver.c | 25 +--
>>> src/storage/storage_driver.c | 25 +--
>>> src/test/test_driver.c | 156 ++-------------
>>> src/uml/uml_driver.c | 10 +-
>>> src/vbox/vbox_common.c | 1 -
>>> src/vbox/vbox_driver.c | 47 ++---
>>> src/vbox/vbox_network.c | 32 ----
>>> src/vbox/vbox_storage.c | 30 ---
>>> src/vmware/vmware_driver.c | 12 +-
>>> src/xen/xen_driver.c | 11 +-
>>> src/xenapi/xenapi_driver.c | 10 +-
>>> tests/qemuxml2argvtest.c | 17 --
>>> tests/virdrivermoduletest.c | 18 +-
>>> 67 files changed, 336 insertions(+), 2116 deletions(-)
>>> delete mode 100644 src/esx/esx_device_monitor.c
>>> delete mode 100644 src/esx/esx_device_monitor.h
>>> delete mode 100644 src/esx/esx_nwfilter_driver.c
>>> delete mode 100644 src/esx/esx_nwfilter_driver.h
>>> delete mode 100644 src/esx/esx_secret_driver.c
>>> delete mode 100644 src/esx/esx_secret_driver.h
>>> delete mode 100644 src/hyperv/hyperv_device_monitor.c
>>> delete mode 100644 src/hyperv/hyperv_device_monitor.h
>>> delete mode 100644 src/hyperv/hyperv_interface_driver.c
>>> delete mode 100644 src/hyperv/hyperv_interface_driver.h
>>> delete mode 100644 src/hyperv/hyperv_network_driver.c
>>> delete mode 100644 src/hyperv/hyperv_network_driver.h
>>> delete mode 100644 src/hyperv/hyperv_nwfilter_driver.c
>>> delete mode 100644 src/hyperv/hyperv_nwfilter_driver.h
>>> delete mode 100644 src/hyperv/hyperv_secret_driver.c
>>> delete mode 100644 src/hyperv/hyperv_secret_driver.h
>>> delete mode 100644 src/hyperv/hyperv_storage_driver.c
>>> delete mode 100644 src/hyperv/hyperv_storage_driver.h
>>
>> Instead of finding a needle in haystack (read pointing out line in
>> the diff that needs to be fixed), I'm pasting diff that you need to
>> squash in. I'm sure you'll get the idea why:
>
> Hehe, thanks. I forgot that we needed an SDK to compile the
> parallels driver now. Any idea if that's in Fedora yet ?
I don't think so. But they have spec file in their git repo:
https://github.com/CloudServer/parallels-sdk
Michal
More information about the libvir-list
mailing list