1. 27 7月, 2017 1 次提交
  2. 24 11月, 2016 1 次提交
    • D
      vbox: change how vbox API is initialized. · 04518c36
      Dawid Zamirski 提交于
      * add vboxDriver object to serve as a singleton global object that
        holds references to IVirtualBox and ISession to be shared among
        multiple connections. The vbox_driver is instantiated only once in
        the first call vboxGetDriverConnection function that is guarded by
        a mutex.
      
      * call vbox API initialize only when the first connection is
        established, and likewise uninitialize when last connection
        disconnects. The prevents each subsequent connection from overwriting
        IVirtualBox/ISession instances of any other active connection that
        led to libvirtd segfaults. The virConnectOpen and virConnectClose
        implementations are guarded by mutex on the global vbox_driver_lock
        where the global vbox_driver object counts connectios and decides
        when it's safe to call vbox's init/uninit routines.
      
      * add IVirutalBoxClient to vboxDriver and use it to in tandem with newer
        pfnClientInitialize/pfnClientUninitalize APIs for vbox versions that
        support it, to avoid usage of the old pfnComInitialize/Uninitialize.
      04518c36
  3. 22 6月, 2016 1 次提交
  4. 08 6月, 2016 1 次提交
  5. 27 1月, 2015 1 次提交
    • D
      Removing probing of secondary drivers · 55ea7be7
      Daniel P. Berrange 提交于
      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: NDaniel P. Berrange <berrange@redhat.com>
      55ea7be7
  6. 03 11月, 2014 1 次提交
    • M
      vbox: don't register NULL driver · 55bbc342
      Martin Kletzander 提交于
      We were missing check for the fact that the storage driver was found and
      in case there is no vbox storage driver available, daemon raised the
      following error each start:
      
        error : virRegisterStorageDriver:592 : driver in
        virRegisterStorageDriver must not be NULL
      
      Fixing this makes the condition unified with networkDriver registration
      in vbox as well.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      55bbc342
  7. 29 10月, 2014 1 次提交
  8. 25 10月, 2014 1 次提交
  9. 23 10月, 2014 1 次提交
  10. 04 10月, 2014 1 次提交
  11. 03 10月, 2014 2 次提交
    • T
      vbox: New network driver · 87dea4fc
      Taowei 提交于
      This patch seperate the domain driver and the network driver.
      
      libvirt_driver_vbox_impl.la has been linked in the network driver.
      So that the version specified codes in vbox_V*.c would only be
      compiled once.
      
      The vboxGetNetworkDriver provides a simple interface to get vbox
      network driver.
      87dea4fc
    • T
      vbox: Interfaces for register per parties · fac5d061
      Taowei 提交于
      The patch dbb4cbf5 by Michal has splited the vbox driver into
      three parties. This modification brings a more suitable interface
      to the previous patch.
      
      The new function vboxGetDriver is introduced to get the
      corresponding vbox domain driver directly thought the vbox version.
      
      Functions like vboxGetNetworkDriver and vboxGetStorageDriver
      will be introduced after rewriting it's drivers.
      
      This patch, by the way, fixed the align problem for vbox in
      Makefile.am
      fac5d061
  12. 27 8月, 2014 1 次提交
    • M
      vbox: Register per partes · dbb4cbf5
      Michal Privoznik 提交于
      Since times when vbox moved to the daemon (due to some licensing
      issue) the subdrivers that vbox implements were registered, but not
      opened since our generic subdrivers took priority. I've tried to fix
      this in 65b7d553 but it was not correct. Apparently moving
      vbox driver registration upfront changes the default connection URI
      which makes some users sad. So, this commit breaks vbox into pieces
      and register vbox's network and storage drivers first, and vbox driver
      then at the end. This way, the vbox driver is registered in the order
      it always was, but its subdrivers are registered prior the generic
      ones.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      dbb4cbf5
  13. 21 8月, 2014 1 次提交
    • M
      hvsupport: Adapt to vbox driver rewrite · cf389258
      Michal Privoznik 提交于
      Since vbox driver rewrite the virDriver structure init moved from
      vbox_tmpl.c into vbox_common.c. However, our hvsupport.pl script
      doesn't count with that. It still parses vbox_tmp.c and looks for
      virDriver structure which is not found there anymore. As a result,
      at hvsupport page is seems like vbox driver doesn't support
      anything.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      cf389258
  14. 15 8月, 2014 2 次提交
    • T
      vbox: Introducing vboxCommonDriver · cdba7c90
      Taowei 提交于
      After this patch, we will have only one common domain driver.
      So, the rewritten on domain driver is finished in this patch.
      cdba7c90
    • T
      vbox: Begin to rewrite, vboxConnectOpen · 7f0f415b
      Taowei 提交于
      Introduce vbox_uniformed_api to deal with version conflicts. Use
      vbox_install_api to register the currect vboxUniformedAPI with
      vbox version.
      
      vboxConnectOpen has been rewritten.
      7f0f415b
  15. 21 3月, 2014 1 次提交
  16. 18 3月, 2014 1 次提交
  17. 23 1月, 2014 1 次提交
    • J
      vbox: add support for v4.2.20+ and v4.3.4+ · bb85da2c
      Jean-Baptiste Rouault 提交于
      Bugs have been found in the VirtualBox API C bindings. These bugs have
      been fixed in versions 4.2.20 and 4.3.4. However, the changes in the
      C bindings are incompatible with the vbox_CAPI_v4_2.h and vbox_CAPI_v4_3.h
      files which are bundled in libvirt source code.
      This is why the following patch adds vbox_CAPI_v4_2_20.h and
      vbox_CAPI_v4_3_4.h.
      
      The actual underlying problem here is that until now,
      libvirt assumed that VirtualBox API can only change between minor
      versions (4.2 -> 4.3), but we have a case here where it changed
      (or got fixed) between patch versions (4.2.18 -> 4.2.20).
      
      This patch makes the VBOX_API_VERSION represent the full API
      version number (i.e 4002 => 4002000) so there are specific version
      numbers for Vbox 4.2.20 (4002020) and 4.3.4 (4003004)
      bb85da2c
  18. 25 11月, 2013 1 次提交
    • R
      vbox: add support for 4.3 APIs · c677ee85
      Ryota Ozaki 提交于
      Makefile.am, vbox_V4_3.c and vbox_driver.c do regular
      modifitions to support a new version of APIs.
      
      vbox_tmpl.c basically fixes incompatibilities since 4.2.
      
      The affected incompatibilities of 4.3 are:
      * IMachine::Delete() has been renamed to IMachine::deleteConfig()
      * IMedium::CreateBaseStorage() now accepts multiple variant values
      * IDisplay::GetScreenResolution() now returns the display position
        in the guest
      * IMachine now has multiple IUSBControllers and IUSBDeviceFilters
        handles USB device filters instead of (obsolete) IUSBController
      
      This patch is tested on Mac OS X 10.8.5 and Fedora 19.
      Signed-off-by: NRyota Ozaki <ozaki.ryota@gmail.com>
      c677ee85
  19. 21 10月, 2013 1 次提交
  20. 07 6月, 2013 1 次提交
    • R
      Add support for VirtualBox 4.2 APIs · ab7110bf
      ryan woodsmall 提交于
      A few things have changed in the VirtualBox API - some small
      (capitalizations of things in function names like Ip to IP
      and Dhcp to DHCP) and some much larger (FindMedium is superceded
      by OpenMedium). The biggest change for the sake of this patch
      is the signature of CreateMachine is quite a bit different. Using
      the Oracle source as a guide, to spin up a VM with a given UUID,
      it looks like a text flag has to be passed in a new argument to
      CreateMachine. This flag is built in the VirtualBox 4.2 specific
      ifdefs and is kind of ugly but works. Additionally, there is now
      (unused) VM groups support in CreateMachine and the previous
      'osTypeId' arg is currently set to nsnull as in the Oracle code.
      
      The FindMedium to OpenMedium changes were more straightforward
      and are pretty clear. The rest of the vbox template changes are
      basically spelling/capitalization changes from the looks of things.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ab7110bf
  21. 21 5月, 2013 1 次提交
    • E
      maint: refer to correct license file · 043af8ac
      Eric Blake 提交于
      Now that COPYING no longer contains the text of the LGPL,
      modify the LGPLv2-only files from vbox to call out the
      correct file.
      
      * src/vbox/vbox_CAPI_v2_2.h: Refer to correct file.
      * src/vbox/vbox_CAPI_v3_0.h: Likewise.
      * src/vbox/vbox_CAPI_v3_1.h: Likewise.
      * src/vbox/vbox_CAPI_v3_2.h: Likewise.
      * src/vbox/vbox_CAPI_v4_0.h: Likewise.
      * src/vbox/vbox_CAPI_v4_1.h: Likewise.
      * src/vbox/vbox_V2_2.c: Likewise.
      * src/vbox/vbox_V3_0.c: Likewise.
      * src/vbox/vbox_V3_1.c: Likewise.
      * src/vbox/vbox_XPCOMCGlue.c: Likewise.
      * src/vbox/vbox_XPCOMCGlue.h: Likewise.
      * src/vbox/vbox_driver.c: Likewise.
      * src/vbox/vbox_driver.h: Likewise.
      * src/vbox/vbox_tmpl.c: Likewise.
      * src/vbox/vbox_V3_2.c: Copy license notice from vbox_V3_1.c.
      * src/vbox/vbox_V4_0.c: Likewise.
      * src/vbox/vbox_V4_1.c: Likewise.
      * src/vbox/README: Mention copyright issues; this particular
      file contains no code and therefore does not need LGPL.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      043af8ac
  22. 03 5月, 2013 1 次提交
    • E
      build: fix mingw build of vbox · 4f8e2bac
      Eric Blake 提交于
      More fallout from commit 7c9a2d88 dropping too many headers.  Fixes:
      
      In file included from ../../src/vbox/vbox_glue.c:26:0:
      ../../src/vbox/vbox_MSCOMGlue.c: In function 'vboxLookupVersionInRegistry':
      ../../src/vbox/vbox_MSCOMGlue.c:435:5: error: implicit declaration of function 'virParseVersionString' [-Werror=implicit-function-declaration]
      ...
      ../../src/vbox/vbox_driver.c: In function 'vboxConnectOpen':
      ../../src/vbox/vbox_driver.c:147:5: error: implicit declaration of function 'getuid' [-Werror=implicit-function-declaration]
      ../../src/vbox/vbox_driver.c:147:5: error: nested extern declaration of 'getuid' [-Werror=nested-externs]
      
      * src/vbox/vbox_MSCOMGlue.c (includes): Add missing includes.
      * src/vbox/vbox_driver.c (includes): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      4f8e2bac
  23. 02 5月, 2013 1 次提交
    • M
      virutil: Move string related functions to virstring.c · 7c9a2d88
      Michal Privoznik 提交于
      The source code base needs to be adapted as well. Some files
      include virutil.h just for the string related functions (here,
      the include is substituted to match the new file), some include
      virutil.h without any need (here, the include is removed), and
      some require both.
      7c9a2d88
  24. 24 4月, 2013 2 次提交
  25. 21 12月, 2012 3 次提交
  26. 02 11月, 2012 1 次提交
  27. 10 8月, 2012 1 次提交
    • E
      build: fix PROBE() usage of intptr_t · 51ee43aa
      Eric Blake 提交于
      Otherwise, in locations like virobject.c where PROBE is used,
      for certain configure options, the compiler warns:
      
      util/virobject.c:110:1: error: 'intptr_t' undeclared (first use in this function)
      
      As long as we are making this header always available, we can
      clean up several other files.
      
      * src/internal.h (includes): Pull in <stdint.h>.
      * src/conf/nwfilter_conf.h: Rely on internal.h.
      * src/storage/storage_backend.c: Likewise.
      * src/storage/storage_backend.h: Likewise.
      * src/util/cgroup.c: Likewise.
      * src/util/sexpr.h: Likewise.
      * src/util/virhashcode.h: Likewise.
      * src/util/virnetdevvportprofile.h: Likewise.
      * src/util/virnetlink.h: Likewise.
      * src/util/virrandom.h: Likewise.
      * src/vbox/vbox_driver.c: Likewise.
      * src/xenapi/xenapi_driver.c: Likewise.
      * src/xenapi/xenapi_utils.c: Likewise.
      * src/xenapi/xenapi_utils.h: Likewise.
      * src/xenxs/xenxs_private.h: Likewise.
      * tests/storagebackendsheepdogtest.c: Likewise.
      51ee43aa
  28. 19 7月, 2012 1 次提交
  29. 30 10月, 2011 1 次提交
    • M
      vbox: Add support for VirtualBox 4.1 · 73ce5050
      Matthias Bolte 提交于
      Deal with the incompatible changes in the VirtualBox 4.1 API.
      
      INetworkAdapter has its different AttachTo* method replaced by
      a settable attachmentType property.
      
      The maximum number of network adapters is now requestable per
      chipset type.
      
      The OpenMedium method got a bool parameter to request opening
      a medium under a new IID.
      73ce5050
  30. 14 7月, 2011 1 次提交
    • E
      vbox: reject unknown flags · 8d173c47
      Eric Blake 提交于
      * src/vbox/vbox_driver.c (vboxOpenDummy): Reject unknown flags.
      * src/vbox/vbox_tmpl.c (vboxOpen, vboxDomainReboot)
      (vboxNetworkOpen, vboxNetworkGetXMLDesc, vboxStorageOpen)
      (vboxStorageVolCreateXML, vboxStorageVolDelete)
      (vboxStorageVolGetXMLDesc, vboxDomainScreenshot): Likewise.
      8d173c47
  31. 08 7月, 2011 1 次提交
    • E
      drivers: prefer unsigned int for flags · 1740c381
      Eric Blake 提交于
      Now that the public APIs always use unsigned flags, the internal
      driver callbacks might as well do likewise.
      
      * src/driver.h (vrDrvOpen, virDrvDomainCoreDump)
      (virDrvDomainGetXMLDesc, virDrvNetworkGetXMLDesc)
      (virDrvNWFilterGetXMLDesc): Update type.
      * src/remote/remote_protocol.x (remote_open_args)
      (remote_domain_core_dump_args, remote_domain_get_xml_desc_args)
      (remote_network_get_xml_desc_args)
      (remote_nwfilter_get_xml_desc_args): Likewise.
      * src/test/test_driver.c: Update clients.
      * src/remote/remote_driver.c: Likewise.
      * src/xen/xen_hypervisor.c: Likewise.
      * src/xen/xen_hypervisor.h: Likewise.
      * src/xen/xen_driver.c: Likewise.
      * src/xen/xend_internal.c: Likewise.
      * src/xen/xend_internal.h: Likewise.
      * src/xen/xm_internal.c: Likewise.
      * src/xen/xm_internal.h: Likewise.
      * src/xen/xs_internal.c: Likewise.
      * src/xen/xs_internal.h: Likewise.
      * src/xen/xen_inotify.c: Likewise.
      * src/xen/xen_inotify.h: Likewise.
      * src/phyp/phyp_driver.c: Likewise.
      * src/openvz/openvz_driver.c: Likewise.
      * src/vmware/vmware_driver.c: Likewise.
      * src/vbox/vbox_driver.c: Likewise.
      * src/vbox/vbox_tmpl.c: Likewise.
      * src/xenapi/xenapi_driver.c: Likewise.
      * src/esx/esx_driver.c: Likewise.
      * src/esx/esx_interface_driver.c: Likewise.
      * src/esx/esx_network_driver.c: Likewise.
      * src/esx/esx_storage_driver.c: Likewise.
      * src/esx/esx_device_monitor.c: Likewise.
      * src/esx/esx_secret_driver.c: Likewise.
      * src/esx/esx_nwfilter_driver.c: Likewise.
      * src/interface/netcf_driver.c: Likewise.
      * src/nwfilter/nwfilter_driver.c: Likewise.
      * src/libxl/libxl_driver.c: Likewise.
      * src/qemu/qemu_driver.c: Likewise.
      * src/lxc/lxc_driver.c: Likewise.
      * src/uml/uml_driver.c: Likewise.
      * src/network/bridge_driver.c: Likewise.
      * src/secret/secret_driver.c: Likewise.
      * src/storage/storage_driver.c: Likewise.
      * src/node_device/node_device_hal.c: Likewise.
      * src/node_device/node_device_udev.c: Likewise.
      * src/remote_protocol-structs: Likewise.
      1740c381
  32. 12 5月, 2011 1 次提交
    • L
      libvirt,logging: cleanup VIR_XXX0() · b65f37a4
      Lai Jiangshan 提交于
      These VIR_XXXX0 APIs make us confused, use the non-0-suffix APIs instead.
      
      How do these coversions works? The magic is using the gcc extension of ##.
      When __VA_ARGS__ is empty, "##" will swallow the "," in "fmt," to
      avoid compile error.
      
      example: origin				after CPP
      	high_level_api("%d", a_int)	low_level_api("%d", a_int)
      	high_level_api("a  string")	low_level_api("a  string")
      
      About 400 conversions.
      
      8 special conversions:
      VIR_XXXX0("") -> VIR_XXXX("msg") (avoid empty format) 2 conversions
      VIR_XXXX0(string_literal_with_%) -> VIR_XXXX(%->%%) 0 conversions
      VIR_XXXX0(non_string_literal) -> VIR_XXXX("%s", non_string_literal)
        (for security) 6 conversions
      Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
      b65f37a4
  33. 17 4月, 2011 1 次提交
  34. 21 2月, 2011 1 次提交
    • E
      maint: kill all remaining uses of old DEBUG macro · 994e7567
      Eric Blake 提交于
      Done mechanically with:
      $ git grep -l '\bDEBUG0\? *(' | xargs -L1 sed -i 's/\bDEBUG0\? *(/VIR_&/'
      
      followed by manual deletion of qemudDebug in daemon/libvirtd.c, along
      with a single 'make syntax-check' fallout in the same file, and the
      actual deletion in src/util/logging.h.
      
      * src/util/logging.h (DEBUG, DEBUG0): Delete.
      * daemon/libvirtd.h (qemudDebug): Likewise.
      * global: Change remaining clients over to VIR_DEBUG counterpart.
      994e7567
  35. 28 12月, 2010 1 次提交
    • M
      vbox: Add support for VirtualBox 4.0 · 8d2e24d6
      Matthias Bolte 提交于
      Add vboxArrayGetWithUintArg to handle new signature variations. Also
      refactor vboxArrayGet* implementation to use a common helper function.
      
      Deal with the incompatible changes in the VirtualBox 4.0 API. This
      includes major changes in virtual machine and storage medium lookup,
      in RDP server property handling, in session/lock handling and other
      minor areas.
      
      VirtualBox 4.0 also dropped the old event API and replaced it with a
      completely new one. This is not fixed yet and will be addressed in
      another patch. Therefore, currently the domain events are supported
      for VirtualBox 3.x only.
      
      Based on initial work from Jean-Baptiste Rouault.
      8d2e24d6