1. 10 11月, 2009 3 次提交
    • D
      Move code for low level QEMU monitor interaction into separate file · ff261941
      Daniel P. Berrange 提交于
      The qemu_driver.c code should not contain any code that interacts
      with the QEMU monitor at a low level. A previous commit moved all
      the command invocations out. This change moves out the code which
      actually opens the monitor device.
      
      * src/qemu/qemu_driver.c: Remove qemudOpenMonitor & methods called
        from it.
      * src/Makefile.am: Add qemu_monitor.{c,h}
      * src/qemu/qemu_monitor.h: Add qemuMonitorOpen()
      * src/qemu/qemu_monitor.c: All code for opening the monitor
      ff261941
    • D
      Make pciDeviceList struct opaque · dd9e9c3b
      Daniel P. Berrange 提交于
      * src/util/pci.c, src/util/pci.h: Make the pciDeviceList struct
        opaque to callers of the API. Add accessor methods for managing
        devices in the list
      * src/qemu/qemu_driver.c: Update to use APIs instead of directly
        accessing pciDeviceList fields
      dd9e9c3b
    • M
      Add missing OOM error checks, reports and cleanups · 790f0b30
      Matthias Bolte 提交于
      790f0b30
  2. 06 11月, 2009 4 次提交
  3. 05 11月, 2009 1 次提交
    • M
      Allow character devices to have different target types · 89d549c3
      Matthew Booth 提交于
      A character device's target (it's interface in the guest) had only a
      single property: port. This patch is in preparation for adding targets
      which require other properties.
      Since this changes the conf type for character devices this affects
      a number of drivers:
      
      * src/conf/domain_conf.[ch] src/esx/esx_vmx.c src/qemu/qemu_conf.c
        src/qemu/qemu_driver.c src/uml/uml_conf.c src/uml/uml_driver.c
        src/vbox/vbox_tmpl.c src/xen/xend_internal.c src/xen/xm_internal.c:
        target properties are moved into a union in virDomainChrDef, and a
        targetType field is added to identify which union member should be
        used. All current code which touches a virDomainChrDef is updated both
        to use the new union field, and to populate targetType if necessary.
      89d549c3
  4. 04 11月, 2009 4 次提交
    • G
      add MAC address based port filtering to qemu · 0aa72ac6
      Gerhard Stenzel 提交于
      * src/qemu/qemu.conf src/qemu/qemu_conf.c src/qemu/qemu_conf.h: there is
        a new config type option for mac filtering
      * src/qemu/qemu_bridge_filter.[ch]: new module for the ebtable entry points
      * src/qemu/qemu_driver.c: plug the MAC filtering at the right places
        in the domain life cycle
      * src/Makefile.am po/POTFILES.in: add the new module
      0aa72ac6
    • C
      qemu: Remove compiled out localhost migration support · 2f511562
      Cole Robinson 提交于
      Pretty sure this would deadlock now that we have proper locking, so
      remove the code.
      2f511562
    • C
      Various error reporting fixes · 4c44cdcc
      Cole Robinson 提交于
      - Don't duplicate SystemError
      - Use proper error code in domain_conf
      - Fix a broken error call in qemu_conf
      - Don't use VIR_ERR_ERROR in security driver (isn't a valid code in this case)
      4c44cdcc
    • C
      Improve error reporting for virConnectGetHostname calls · 517761fd
      Cole Robinson 提交于
      All drivers have copy + pasted inadequate error reporting which wraps
      util.c:virGetHostname. Move all error reporting to this function, and improve
      what we report.
      
      Changes from v1:
        Drop the driver wrappers around virGetHostname. This means we still need
        to keep the new conn argument to virGetHostname, but I think it's worth
        it.
      517761fd
  5. 03 11月, 2009 6 次提交
    • D
      Fix compilation problems · 112ed8f5
      Daniel Veillard 提交于
      introduced on commit 9231aa7d
      * src/qemu/qemu_driver.c: in qemudRemoveDomainStatus fix a reference
        to an undefined variable buf and free up an allocated string
      112ed8f5
    • C
      Fix up NLS warnings. · 991be604
      Chris Lalancette 提交于
      When building with --disable-nls, I got a few messages like this:
      
      storage/storage_backend.c: In function 'virStorageBackendCreateQemuImg':
      storage/storage_backend.c:571: warning: format not a string literal and no format arguments
      
      Fix these up.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      991be604
    • C
      Remove redundant virFileDeletePID() call · 9231aa7d
      Chris Lalancette 提交于
      qemudShutdownVMDaemon() calls qemudRemoveDomainStatus(), which
      then calls virFileDeletePID().  qemudShutdownVMDaemon() then
      unnecessarily calls virFileDeletePID() again.  Remove this second
      usage of it, and also slightly refactor qemudRemoveDomainStatus()
      to VIR_WARN appropriate error messages.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      9231aa7d
    • D
      Fix return value in virStateInitialize impl for LXC · 979218cd
      Daniel P. Berrange 提交于
      The LXC driver was mistakenly returning -1 for lxcStartup()
      in scenarios that are not an error. This caused the libvirtd
      to quit for unprivileged users. This fixes the return code
      of LXC driver, and also adds a "name" field to the virStateDriver
      struct and logging to make it easier to find these problems
      in the future
      
      * src/driver.h: Add a 'name' field to state driver to allow
        easy identification during failures
      * src/libvirt.c: Log name of failed driver for virStateInit
        failures
      * src/lxc/lxc_driver.c: Don't return a failure code for
        lxcStartup() if LXC is not available on this host, simply
        disable the driver.
      * src/network/bridge_driver.c, src/node_device/node_device_devkit.c,
        src/node_device/node_device_hal.c, src/opennebula/one_driver.c,
        src/qemu/qemu_driver.c, src/remote/remote_driver.c,
        src/secret/secret_driver.c, src/storage/storage_driver.c,
        src/uml/uml_driver.c, src/xen/xen_driver.c: Fill in name
        field in virStateDriver struct
      979218cd
    • D
      Rename internal APis · fc8d1991
      Daniel P. Berrange 提交于
      Rename virDomainIsActive to virDomainObjIsActive, and
      virInterfaceIsActive to virInterfaceObjIsActive and finally
      virNetworkIsActive to virNetworkObjIsActive.
      
      * src/conf/domain_conf.c, src/conf/domain_conf.h,
        src/conf/interface_conf.h, src/conf/network_conf.c,
        src/conf/network_conf.h, src/lxc/lxc_driver.c,
        src/network/bridge_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/qemu/qemu_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c: Update for
        renamed APIs.
      fc8d1991
    • D
      Allow for a driver specific private data blob in virDomainObjPtr · 3505790b
      Daniel P. Berrange 提交于
      The virDomainObjPtr object stores state about a running domain.
      This object is shared across all drivers so it is not appropriate
      to include driver specific state here. This patch adds the ability
      to request a blob of private data per domain object instance. The
      driver must provide a allocator & deallocator for this purpose
      
      THis patch abuses the virCapabilitiesPtr structure for storing the
      allocator/deallocator callbacks, since it is already being abused
      for other internal things relating to parsing. This should be moved
      out into a separate object at some point.
      
      * src/conf/capabilities.h: Add privateDataAllocFunc and
        privateDataFreeFunc fields
      * src/conf/domain_conf.c: Invoke the driver allocators / deallocators
        when creating/freeing virDomainObjPtr instances.
      * src/conf/domain_conf.h: Pass virCapsPtr into virDomainAssignDef
        to allow access to the driver specific allocator function
      * src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/qemu/qemu_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c: Update for
        change in virDomainAssignDef contract
      3505790b
  6. 29 10月, 2009 1 次提交
    • D
      Convert virDomainObjListPtr to use a hash of domain objects · a3adcce7
      Daniel P. Berrange 提交于
      The current virDomainObjListPtr object stores domain objects in
      an array. This means that to find a particular objects requires
      O(n) time, and more critically acquiring O(n) mutex locks.
      
      The new impl replaces the array with a virHashTable, keyed off
      UUID. Finding a object based on UUID is now O(1) time, and only
      requires a single mutex lock. Finding by name/id is unchanged
      in complexity.
      
      In changing this, all code which iterates over the array had
      to be updated to use a hash table iterator function callback.
      Several of the functions which were identically duplicating
      across all drivers were pulled into domain_conf.c
      
      * src/conf/domain_conf.h, src/conf/domain_conf.c: Change
        virDomainObjListPtr to use virHashTable. Add a initializer
        method virDomainObjListInit, and rename virDomainObjListFree
        to virDomainObjListDeinit, since its not actually freeing
        the container, only its contents. Also add some convenient
        methods virDomainObjListGetInactiveNames,
        virDomainObjListGetActiveIDs and virDomainObjListNumOfDomains
        which can be used to implement the correspondingly named
        public API entry points in drivers
      * src/libvirt_private.syms: Export new methods from domain_conf.h
      * src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_conf.c, src/openvz/openvz_driver.c,
        src/qemu/qemu_driver.c, src/test/test_driver.c,
        src/uml/uml_driver.c, src/vbox/vbox_tmpl.c: Update all code
        to deal with hash tables instead of arrays for domains
      a3adcce7
  7. 28 10月, 2009 2 次提交
  8. 26 10月, 2009 1 次提交
  9. 14 10月, 2009 1 次提交
    • C
      Finer grained migration control · 2d8d9b10
      Chris Lalancette 提交于
      Normally, when you migrate a domain from host A to host B,
      the domain on host A remains defined but shutoff and the domain
      on host B remains running but is a "transient".  Add a new
      flag to virDomainMigrate() to allow the original domain to be
      undefined on source host A, and a new flag to virDomainMigrate() to
      allow the new domain to be persisted on the destination host B.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      2d8d9b10
  10. 13 10月, 2009 1 次提交
    • D
      Fix QEMU restore from file in raw format · 74b379cb
      Daniel P. Berrange 提交于
      The logic for running the decompression programs was broken in
      commit f2387093, so that for
      non-raw formats the decompression program was never run, and
      for raw formats, it tried to exec an argv[] with initial NULL
      in the program name.
      
      * src/qemu/qemu_driver.c: Fix logic in runing decompression program
      74b379cb
  11. 09 10月, 2009 7 次提交
    • D
      Support a new peer-to-peer migration mode & public API · fae0da5c
      Daniel P. Berrange 提交于
      Introduces several new public API options for migration
      
       - VIR_MIGRATE_PEER2PEER: With this flag the client only
         invokes the virDomainMigratePerform method, expecting
         the source host driver to do whatever is required to
         complete the entire migration process.
       - VIR_MIGRATE_TUNNELLED: With this flag the actual data
         for migration will be tunnelled over the libvirtd RPC
         channel. This requires that VIR_MIGRATE_PEER2PEER is
         also set.
       - virDomainMigrateToURI: This is variant of the existing
         virDomainMigrate method which does not require any
         virConnectPtr for the destination host. Given suitable
         driver support, this allows for all the same modes as
         virDomainMigrate()
      
      The URI for VIR_MIGRATE_PEER2PEER must be a valid libvirt
      URI. For non-p2p migration a hypervisor specific migration
      URI is used.
      
      virDomainMigrateToURI without a PEER2PEER flag is only
      support for Xen currently, and it involves XenD talking
      directly to XenD, no libvirtd involved at all.
      
      * include/libvirt/libvirt.h.in: Add VIR_MIGRATE_PEER2PEER
        flag for migration
      * src/libvirt_internal.h: Add feature flags for peer to
        peer migration (VIR_FEATURE_MIGRATE_P2P) and direct
        migration (VIR_MIGRATE_PEER2PEER mode)
      * src/libvirt.c: Implement support for VIR_MIGRATE_PEER2PEER
        and virDomainMigrateToURI APIs.
      * src/xen/xen_driver.c: Advertise support for DIRECT migration
      * src/xen/xend_internal.c: Add TODO item for p2p migration
      * src/libvirt_public.syms: Export virDomainMigrateToURI
        method
      * src/qemu/qemu_driver.c: Add support for PEER2PEER and
        migration, and adapt TUNNELLED migration.
      * tools/virsh.c: Add --p2p and --direct args and use the
        new virDomainMigrateToURI method where possible.
      fae0da5c
    • D
      Re-arrange doTunnelMigrate to simplify cleanup code · 35e7f271
      Daniel P. Berrange 提交于
      Re-arrange the doTunnelMigrate method putting all non-QEMU local
      state setup steps first. This maximises chances of success before
      then starting destination QEMU for receiving incoming migration.
      Altogether this can reduce the number of goto cleanup labels to
      something more managable.
      
      * qemu/qemu_driver.c: Re-order steps in doTunnelMigrate
      35e7f271
    • D
      Separate out code for sending tunnelled data · 8d75cb7f
      Daniel P. Berrange 提交于
      Simplify the doTunnelMigrate code by pulling out the code for
      sending all tunnelled data into separate helper
      
      * qemu/qemu_driver.c: introduce doTunnelSendAll() method
      8d75cb7f
    • D
      Pull connection handling code out of doTunnelMigrate · 0d5600fd
      Daniel P. Berrange 提交于
      Simplify the doTunnelMigrate() method by pulling out the code
      which opens/closes the virConnectPtr  object into a parent
      method
      
      * qemu/qemu_driver.c: Add doPeer2PeerMigrate which then calls
        doTunnelMigrate with dconn & dom_xml
      0d5600fd
    • D
      Fix stream abort upon I/O failure during migration · 345a5092
      Daniel P. Berrange 提交于
      virStreamAbort is needed when the caller wishes to terminate
      the stream early, not when virStreamSend fails.
      
      * qemu/qemu_driver.c: Fix calling of virStreamAbort during
        tunnelled migration
      345a5092
    • D
      Refactor native QEMU migration code · de85acdf
      Daniel P. Berrange 提交于
      The code for tunnelled migration was added in a dedicated method,
      but the native migration code is still inline in the top level
      qemudDomainMigratePerform() API. Move the native code out into
      a dedicated method too to make things more maintainable.
      
      * src/qemu/qemu_driver.c: Pull code for performing a native
        QEMU migration out into separate method
      de85acdf
    • D
      Remove unneccessary uri_in parameter from virMigratePrepareTunnel · f6c66d01
      Daniel P. Berrange 提交于
      Since virMigratePrepareTunnel() is used for migration over the
      native libvirt connection, there is never any need to pass the
      target URI to this method.
      
      * daemon/remote.c, src/driver.h, src/libvirt.c, src/libvirt_internal.h,
        src/qemu/qemu_driver.c, src/remote/remote_driver.c,
        src/remote/remote_protocol.c, src/remote/remote_protocol.h,
        src/remote/remote_protocol.x: Remove 'uri_in' parameter from
        virMigratePrepareTunnel() method
      f6c66d01
  12. 07 10月, 2009 2 次提交
    • R
      Fix handling return value of qemuMonitorSetBalloon · e1f5f851
      Ryota Ozaki 提交于
      * src/qemu/qemu_driver.c: The positive return value of
        qemuMonitorSetBalloon should be handled as a success
      e1f5f851
    • J
      Add a domain argument to SVirt *RestoreImageLabel · 709c37e9
      Jamie Strandboge 提交于
      When James Morris originally submitted his sVirt patches (as seen in
      libvirt 0.6.1), he did not require on disk labelling for
      virSecurityDomainRestoreImageLabel. A later commit[2] changed this
      behavior to assume on disk labelling, which halts implementations for
      path-based MAC systems such as AppArmor and TOMOYO where
      vm->def->seclabel is required to obtain the label.
      
      * src/security/security_driver.h src/qemu/qemu_driver.c
        src/security/security_selinux.c: adds the 'virDomainObjPtr vm'
        argument back to *RestoreImageLabel
      709c37e9
  13. 02 10月, 2009 1 次提交
  14. 01 10月, 2009 1 次提交
  15. 29 9月, 2009 5 次提交
    • D
      Fix crash in device hotplug cleanup code · 879cd8cc
      Daniel P. Berrange 提交于
      * src/qemu/qemu_driver.c: Fix crash in scenario where XML
        parsing of hotplugged device failed & thus 'dev' is NULL
      879cd8cc
    • D
      Add API for issuing 'host_net_remove' monitor command · b06c97e5
      Daniel P. Berrange 提交于
      * src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c: Add new
        qemuMonitorRemoveHostNetwork() command for removing host
        networks
      * src/qemu/qemu_driver.c: Convert NIC hotplug methods over
        to use qemuMonitorRemoveHostNetwork()
      b06c97e5
    • D
      Add API for issuing 'host_net_add' monitor command · 4c10127b
      Daniel P. Berrange 提交于
      * src/qemu/qemu_conf.h, src/qemu/qemu_conf.c: Remove prefix arg
        from qemuBuildHostNetStr which is no longer required
      * src/qemu/qemu_driver.c: Refactor to use qemuMonitorAddHostNetwork()
        API for adding host network
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Add new
        qemuMonitorAddHostNetwork() method for adding host networks
      4c10127b
    • D
      Add API for issuing 'pci_add nic' monitor command · f8d54e7c
      Daniel P. Berrange 提交于
      * src/qemu/qemu_conf.c: Remove separator from qemuBuildNicStr()
        args, and remove hardcoded 'nic' prefix. Leave it upto callers
        instead
      * src/qemu/qemu_driver.c: Switch over to using the new
        qemuMonitorAddPCINetwork() method for NIC hotplug
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Add new
        qemuMonitorAddPCINetwork API for PCI network device hotplug
      f8d54e7c
    • D
      Add API for issuing 'getfd' and 'closefd' monitor commands · aadab515
      Daniel P. Berrange 提交于
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Add new
        qemuMonitorCloseFileHandle and qemuMonitorSendFileHandle
        APIs for processing file handles
      * src/qemu/qemu_driver.c: Convert NIC hotplug method over to
        use   qemuMonitorCloseFileHandle and qemuMonitorSendFileHandle
      aadab515