[libvirt] [PATCH 8/8] Removing probing of secondary drivers

Daniel P. Berrange berrange at redhat.com
Wed Jan 21 10:15:37 UTC 2015


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 ?

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list