1. 11 2月, 2010 1 次提交
    • D
      Fix disk stats retrieval with QEMU >= 0.12 · 73579750
      Daniel P. Berrange 提交于
      With QEMU >= 0.12 the host and guest side of disks no longer have
      the same naming convention. Specifically the host side will now
      get a 'drive-' prefix added to its name. The 'info blockstats'
      monitor command returns the host side name, so it is neccessary
      to strip this off when looking up stats since libvirt stores the
      guest side name !
      
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Move 'drive-' prefix
        string to a defined constant
      * src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_text.c: Strip
        off 'drive-' prefix (if found) when looking up disk stats
      73579750
  2. 10 2月, 2010 12 次提交
    • C
      qemu: Increase guest startup timeout to 30 seconds · d3024a2c
      Cole Robinson 提交于
      Currently the timeout for reading startup output is 3 seconds. If the
      host is under any sort of load, we can easily trigger this. Lets bump
      it to 30 seconds.
      
      Since the polling loop checks to see if the process has died, we shouldn't
      erroneously hit this timeout if qemu bombs (only if it is stuck in some
      infinite loop).
      d3024a2c
    • C
      qemu: Properly report a startup timeout error · b65490a3
      Cole Robinson 提交于
      The timeout errors were unconditionally being overwritten by the less
      helpful 'unable to start guest' error.
      b65490a3
    • D
      Annotate some virConnectPtr as mandatory non-null · 38536d6f
      Daniel P. Berrange 提交于
      Use the ATTRIBUTE_NONNULL annotation to mark some virConnectPtr
      args as mandatory non-null so the compiler can warn of mistakes
      
      * src/conf/domain_event.h: All virConnectPtr args must be non-null
      * src/qemu/qemu_conf.h: qemudBuildCommandLine and
        qemudNetworkIfaceConnect() must be given non-null connection
      * tests/qemuxml2argvtest.c: Provide a non-null (dummy) connection to
        qemudBuildCommandLine()
      38536d6f
    • D
      Remove virConnectPtr from CPU XML APIs · f430ddb6
      Daniel P. Berrange 提交于
      The virConnectPtr is no longer required for error reporting since
      that is recorded in a thread local. Remove use of virConnectPtr
      from all APIs in cpu_conf.{h,c} and update all callers to
      match
      f430ddb6
    • D
      Remove virConnectPtr from all node device XML APIs · 99edc443
      Daniel P. Berrange 提交于
      The virConnectPtr is no longer required for error reporting since
      that is recorded in a thread local. Remove use of virConnectPtr
      from all APIs in node_device_conf.{h,c} and update all callers to
      match
      99edc443
    • D
      Remove virConnectPtr from USB/PCI device iterators · ce71b865
      Daniel P. Berrange 提交于
      All callers now pass a NULL virConnectPtr into the USB/PCi device
      iterator functions. Therefore the virConnectPtr arg can now be
      removed from these functions
      
      * src/util/hostusb.h, src/util/hostusb.c: Remove virConnectPtr
        from usbDeviceFileIterate
      * src/util/pci.c, src/util/pci.h: Remove virConnectPtr arg from
        pciDeviceFileIterate
      * src/qemu/qemu_security_dac.c, src/security/security_selinux.c: Update
        to drop redundant virConnectPtr arg
      ce71b865
    • D
      Fix generation of floppy disk arg for QEMU's -global arg · 9f013d57
      Daniel P. Berrange 提交于
      * src/qemu/qemu_conf.c: Fix ',' vs '.' typo in floppy disk arg
      9f013d57
    • D
      Convert qemu command line flags to 64-bit int · 910b019f
      Daniel P. Berrange 提交于
      The QEMU flags are commonly stored as a signed or unsigned int,
      allowing only 31 flags. This limit is rather close, so to aid
      future patches, change it to a 64-bit int
      
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h, src/qemu/qemu_driver.c,
        tests/qemuargv2xmltest.c, tests/qemuhelptest.c, tests/qemuxml2argvtest.c:
        Use 'unsigned long long' for QEMU flags
      910b019f
    • D
      Remove use of virConnectPtr from security driver APIs · d6126f76
      Daniel P. Berrange 提交于
      The virConnectPtr is no longer required for error reporting since
      that is recorded in a thread local. Remove use of virConnectPtr
      from all APIs in security_driver.{h,c} and update all callers to
      match
      d6126f76
    • D
    • D
      caa805ea
    • D
      Fix security driver configuration · d47ef780
      Daniel P. Berrange 提交于
      The security driver was mistakenly initialized before the QEMU
      config file was loaded. This prevents it being turned off again.
      The capabilities XML was also getting the wrong security driver
      name, due to the stacked driver arrangement.
      
      * src/qemu/qemu_driver.c: Fix initialization order and capabilities
        model name
      d47ef780
  3. 09 2月, 2010 9 次提交
  4. 04 2月, 2010 1 次提交
    • D
      Fix restore of QEMU guests with PCI device reservation · 83acdeaf
      Daniel P. Berrange 提交于
      When restoring from a saved guest image, the XML would already
      contain the PCI slot ID of the IDE controller & video card.
      The attempt to explicitly reserve this upfront would thus fail
      everytime.
      
      * src/qemu/qemu_conf.c: Reserve IDE controller / video card
        slot at time of need, rather than upfront
      83acdeaf
  5. 03 2月, 2010 10 次提交
    • D
      Ensure QEMU DAC security driver is activated at all times · 9120f004
      Daniel P. Berrange 提交于
      If the primary security driver (SELinux/AppArmour) was disabled
      then the secondary QEMU DAC security driver was also disabled.
      This is mistaken, because the latter must be active at all times
      
      * src/qemu/qemu_driver.c: Ensure DAC driver is always active
      9120f004
    • D
      Fix QEMU hotplug device alias assignment · 719c50ca
      Daniel P. Berrange 提交于
      To allow devices to be hot(un-)plugged it is neccessary to ensure
      they all have a unique device aliases. This fixes the hotplug
      methods to assign device aliases before invoking the monitor
      commands which need them
      
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Expose methods
        for assigning device aliases for disks, host devices and
        controllers
      * src/qemu/qemu_driver.c: Assign device aliases when hotplugging
        all types of device
      * tests/qemuxml2argvdata/qemuxml2argv-hostdev-pci-address-device.args,
        tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device.args:
        Update for changed hostdev naming scheme
      719c50ca
    • D
      Disable QEMU monitor IO debugging by default · db0b9e7d
      Daniel P. Berrange 提交于
      db0b9e7d
    • D
      Re-arrange QEMU device alias assignment code · 16478459
      Daniel P. Berrange 提交于
      This patch re-arranges the QEMU device alias assignment code to
      make it easier to call into the same codeblock when performing
      device hotplug. The new code has the ability to skip over already
      assigned names to facilitate hotplug
      
      * src/qemu/qemu_driver.c: Call qemuAssignDeviceNetAlias()
        instead of qemuAssignNetNames
      * src/qemu/qemu_conf.h: Export qemuAssignDeviceNetAlias()
        instead of qemuAssignNetNames
      * src/qemu/qemu_driver.c: Merge the legacy disk/network alias
        assignment code into the main methods
      16478459
    • D
      Remove direct storage of hostnet_name & vlan · 0943048a
      Daniel P. Berrange 提交于
      The current way of assigning names to the host network backend and
      NIC device in QEMU was over complicated, by varying naming scheme
      based on the NIC model and backend type. This simplifies the naming
      to simply be 'net0' and 'hostnet0', allowing code to easily determine
      the host network name and vlan based off the primary device alias
      name 'net0'. This in turn allows removal of alot of QEMU specific
      code from the XML parser, and makes it easier to assign new unique
      names for NICs that are hotplugged
      
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Remove hostnet_name
        and vlan fields from virNetworkDefPtr
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h, src/qemu/qemu_driver.c:
        Use a single network alias naming scheme regardless of NIC type
        or backend type. Determine VLANs from the alias name.
      * tests/qemuxml2argvdata/qemuxml2argv-net-eth-names.args,
        tests/qemuxml2argvdata/qemuxml2argv-net-virtio-device.args,
        tests/qemuxml2argvdata/qemuxml2argv-net-virtio-netdev.args: Update
        for new simpler naming scheme
      0943048a
    • D
      Remove use of -netdev arg with QEMU · 49a0f6cd
      Daniel P. Berrange 提交于
      The QEMU 0.12.x tree has the -netdev command line argument, but not
      corresponding monitor command. We can't enable the former, without
      the latter since it will break hotplug/unplug.
      
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Disable -netdev usage
        until 0.13 at earliest
      * tests/qemuxml2argvtest.c: Add test for -netdev syntax
      * tests/qemuxml2argvdata/qemuxml2argv-net-virtio-netdev.args,
        tests/qemuxml2argvdata/qemuxml2argv-net-virtio-netdev.xml: Test
        data files for -netdev syntax
      49a0f6cd
    • D
      Assign PCI addresses before hotplugging devices · d8acc446
      Daniel P. Berrange 提交于
      PCI disk, disk controllers, net devices and host devices need to
      have PCI addresses assigned before they are hot-plugged
      
      * src/qemu/qemu_conf.c: Add APIs for ensuring a device has an
        address and releasing unused addresses
      * src/qemu/qemu_driver.c: Ensure all devices have addresses
        when hotplugging.
      d8acc446
    • D
      Rewrite way QEMU PCI addresses are allocated · 9258ec0a
      Daniel P. Berrange 提交于
      The current QEMU code allocates PCI addresses incrementally starting
      at 4. This is not satisfactory because the user may have given some
      addresses in their XML config, which need to be skipped over when
      allocating addresses to remaining devices.
      
      It is thus neccessary to maintain a list of already allocated PCI
      addresses and then only allocate ones that remain unused. This is
      also required for domain device hotplug to work properly later.
      
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Add APIs for creating
        list of existing PCI addresses, and allocating new addresses.
        Refactor address assignment to use this code
      * src/qemu/qemu_driver.c: Pull PCI address assignment up into the
        qemuStartVMDaemon() method, as a prelude to moving it into the
        'define' method. Update list of allocated addresses when connecting
        to a running VM at daemon startup.
      * tests/qemuxml2argvtest.c, tests/qemuargv2xmltest.c,
        tests/qemuxml2xmltest.c: Remove USB product test since all
        passthrough is done based on address
      * tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-product.args,
        tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-product.xml: Kil
        unused data files
      9258ec0a
    • D
      Make hotplug use new device_add where possible · 264e98d6
      Daniel P. Berrange 提交于
      Since QEMU startup uses the new -device argument, the hotplug
      code needs todo the same. This converts disk, network and
      host device hotplug to use the device_add command
      
      * src/qemu/qemu_driver.c: Use new device_add monitor APIs
        whereever possible
      264e98d6
    • D
      Introduce internal QEMU monitor APIs for drive + device hotadd · 5ec6cf7f
      Daniel P. Berrange 提交于
      The way QEMU is started has been changed to use '-device' and
      the new style '-drive' syntax. This needs to be mirrored in
      the hotplug code, requiring addition of two new APIs.
      
      * src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c: Define APIs
        qemuMonitorAddDevice() and qemuMonitorAddDrive()
      * src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h,
        src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h:
        Implement the new monitor APIs
      5ec6cf7f
  6. 02 2月, 2010 4 次提交
    • D
      Split out QEMU code for building PCI/USB hostdev arg values · 96c8608d
      Daniel P. Berrange 提交于
      To allow for better code reuse from hotplug methods, the code for
      generating PCI/USB hostdev arg values is split out into separate
      methods
      
      * qemu/qemu_conf.h, qemu/qemu_conf.c: Introduce new APis for
        qemuBuildPCIHostdevPCIDevStr, qemuBuildUSBHostdevUsbDevStr
        and qemuBuildUSBHostdevDevStr
      96c8608d
    • D
      Standard internal API syntax for building QEMU command line arguments · c129d4fe
      Daniel P. Berrange 提交于
      All the helper functions for building command line arguments
      now return a 'char *', instead of acepting a 'char **' or
      virBufferPtr argument
      
      * qemu/qemu_conf.c: Standardize syntax for building args
      * qemu/qemu_conf.h: Export all functions for building args
      * qemu/qemu_driver.c: Update for changed syntax for building
        NIC/hostnet args
      c129d4fe
    • J
      avoid a probable EINVAL from lseek · 9344e6ad
      Jim Meyering 提交于
      * src/qemu/qemu_driver.c (qemudLogReadFD): Don't pass a negative
      offset (from a preceding failed attempt to seek to EOF) to this use
      of lseek.
      9344e6ad
    • J
      avoid format-related warnings · 4cd188d4
      Jim Meyering 提交于
      * src/qemu/qemu_monitor_text.c (qemuMonitorTextGetAllPCIAddresses):
      Use %s.
      * src/storage/storage_backend_iscsi.c (virStorageBackendCreateIfaceIQN):
      Likewise.
      * tools/virsh.c (cmdSecretSetValue): Likewise.
      4cd188d4
  7. 01 2月, 2010 3 次提交
    • C
      Fix PCI host reattach on domain detach. · 29727bac
      Chris Lalancette 提交于
      Similar to the race fixed by
      be34c3c7, make sure
      to wait around for KVM to release the resources from
      a hot-detached PCI device before attempting to
      rebind that device to the host driver.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      29727bac
    • M
      Clarify controllers -device string in QEMU driver · 09080c38
      Matthew Booth 提交于
      The QEMU driver contained code to generate a -device string for piix4-ide, but
      wasn't using it. This change removes this string generation. It also adds a
      comment explaining why IDE and FDC controllers don't generate -device strings.
      
      The change also generates an error if a sata controller is specified for a QEMU
      domain, as this isn't supported.
      
      * src/qemu/qemu_conf.c: Remove VIR_DOMAIN_CONTROLLER_TYPE_IDE handler in
        qemuBuildControllerDevStr(). Ignore IDE and FDC controllers. Error if
        SATA controller is discovered. Add comments.
      09080c38
    • C
      Look in /usr/libexec for the qemu-kvm binary. · b16cd226
      Chris Lalancette 提交于
      On RHEL-5 the qemu-kvm binary is located in /usr/libexec.
      To reduce confusion for people trying to run upstream libvirt
      on RHEL-5 machines, make the qemu driver look in /usr/libexec
      for the qemu-kvm binary.
      
      To make this work, I modified virFindFileInPath to handle an
      absolute path correctly.  I also ran into an issue where
      NULL was sometimes being passed for the file parameter
      to virFindFileInPath; it didn't crash prior to this patch
      since it was building paths like /usr/bin/(null).  This
      is non-standard behavior, though, so I added a NULL
      check at the beginning.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      b16cd226