1. 15 5月, 2014 2 次提交
  2. 14 5月, 2014 7 次提交
    • J
      qemu: Ignore temporary job errors when checking migration status · cc4882f4
      Jiri Denemark 提交于
      When qemu driver is polling for migration to finish (in
      qemuMigrationWaitForCompletion), it may happen that another job allowed
      during migration is running and if it does not finish within 30 seconds,
      migration would be cancelled because of that. However, we can just
      ignore the timeout and let the waiting loop try again later.
      
      If an event fired at the end of migration is ever implemented in QEMU,
      we can just wait for the event instead of polling for migration status
      and libvirt will behave consistently, i.e., migration won't be cancelled
      in case another job started during migration takes long time to finish.
      
      For bug https://bugzilla.redhat.com/show_bug.cgi?id=1083238Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      cc4882f4
    • J
      qemu: Make qemuProcess{Start,Stop}CPUs easier to follow · b5e0532e
      Jiri Denemark 提交于
      As a side effect, the return value of qemuDomainObjEnterMonitorAsync is
      not directly used as the return value of qemuProcess{Start,Stop}CPUs.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      b5e0532e
    • J
      qemuDomainObjBeginNestedJob: Return -2 for temporary failures · dca377db
      Jiri Denemark 提交于
      If job queue is full or waiting for a job times out, the function
      returns -2 so that it can be handled in a different way by callers.
      
      The change is safe since all existing callers of
      qemuDomainObjBeginNestedJob check the return value to be less than zero.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      dca377db
    • J
      qemu: Make qemuDomainObjBeginNestedJob static · 1643b158
      Jiri Denemark 提交于
      It's only used within qemu_domain.c.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      1643b158
    • P
      qemu: snapshot: Terminate job when memory compression program isn't found · 71802685
      Peter Krempa 提交于
      If the compression program for external snapshot memory image isn't
      found we exitted the function without terminating the domain job. This
      caused the domain to be unusable.
      
      The problem was introduced in commit 7df5093f.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1097503
      71802685
    • R
      qemu: extract common PCI handling functions · 353cf370
      Roman Bogorodskiy 提交于
      Move sharable PCI handling functions to domain_addr.[ch], and
      change theirs prefix from 'qemu' to 'vir':
      
       - virDomainPCIAddressAsString;
       - virDomainPCIAddressBusSetModel;
       - virDomainPCIAddressEnsureAddr;
       - virDomainPCIAddressFlagsCompatible;
       - virDomainPCIAddressGetNextSlot;
       - virDomainPCIAddressReleaseSlot;
       - virDomainPCIAddressReserveAddr;
       - virDomainPCIAddressReserveNextSlot;
       - virDomainPCIAddressReserveSlot;
       - virDomainPCIAddressSetFree;
       - virDomainPCIAddressSetGrow;
       - virDomainPCIAddressSlotInUse;
       - virDomainPCIAddressValidate;
      
      The only change here is function names, the implementation itself
      stays untouched.
      
      Extract common allocation code from DomainPCIAddressSetCreate
      into virDomainPCIAddressSetAlloc.
      353cf370
    • R
      qemu: extract PCI handling structs · c453f2d0
      Roman Bogorodskiy 提交于
      Introduce new files (domain_addr.[ch]) to provide
      an API for domain device handling that could be
      shared across the drivers.
      
      A list of data types were extracted and moved there:
      
       qemuDomainPCIAddressBus -> virDomainPCIAddressBus
       qemuDomainPCIAddressBusPtr -> virDomainPCIAddressBusPtr
       _qemuDomainPCIAddressSet -> virDomainPCIAddressSet
       qemuDomainPCIAddressSetPtr -> virDomainPCIAddressSetPtr
       qemuDomainPCIConnectFlags -> virDomainPCIConnectFlags
      
      Also, move the related definitions and macros.
      c453f2d0
  3. 13 5月, 2014 5 次提交
  4. 07 5月, 2014 3 次提交
    • J
      qemu: Adjust size for qcow2/qed if not on sector boundary · e3d66229
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1002813
      
      If qemuDomainBlockResize() is passed a size not on a KiB boundary - that
      is passed a size based in bytes (VIR_DOMAIN_BLOCK_RESIZE_BYTES), then
      depending on the source format (qcow2 or qed), the value passed must
      be on a sector (or 512 byte) boundary. Since other libvirt code quietly
      adjusts the capacity values, then do so here as well - of course ensuring
      that adjustment still fits.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      e3d66229
    • J
      Add support for timestamping QEMU logs · f3be5f0c
      Ján Tomko 提交于
      QEMU commit 5e2ac51 added a boolean '-msg timestamp=[on|off]'
      option, which can enable timestamps on errors:
      $ qemu-system-x86_64 -msg timestamp=on zghhdorf
      2014-04-09T13:25:46.779484Z qemu-system-x86_64: -msg timestamp=on: could
      not open disk image zghhdorf: Could not open 'zghhdorf': No such file or
      directory
      
      Enable this timestamp if the QEMU binary supports it.
      
      Add a 'log_timestamp' option to qemu.conf for disabling this behavior.
      f3be5f0c
    • T
      qemu: track quiesced status in qemuDomainSnapshotFSFreeze · b6d4dad1
      Tomoki Sekiyama 提交于
      Adds 'quiesced' status into qemuDomainObjPrivate that tracks whether
      FSFreeze is requested in the domain.
      
      It modifies error code from qemuDomainSnapshotFSFreeze and
      qemuDomainSnapshotFSThaw, so that a caller can know whether the command is
      actually sent to the guest agent. If the error is caused before sending a
      freeze command, a counterpart thaw command shouldn't be sent either, not to
      confuse fsfreeze status tracking.
      Signed-off-by: NTomoki Sekiyama <tomoki.sekiyama@hds.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      b6d4dad1
  5. 06 5月, 2014 3 次提交
    • L
      qemu: specify domain in host-side PCI addresses when needed/supported · 1e947cf7
      Laine Stump 提交于
      This uses the new QEMU_CAPS_HOST_PCI_MULTIDOMAIN capability when
      present, for -devivce pci-assign, -device vfio-pci, and -pcidevice.
      
      While creating tests for this new functionality, I noticed that the
      xmls for two existing tests had erroneously specified an
      until-now-ignored domain="0x0002", so I corrected those two tests, and
      also added two failure tests to be sure that we alert users who
      attempt to use a non-zero domain with a qemu that doesn't support it.
      1e947cf7
    • L
      qemu: add host-pci-multidomain capability · 17133e37
      Laine Stump 提交于
      Quite a long time ago, (apparently between qemu 0.12 and 0.13) qemu
      quietly began supporting the optional specification of a domain in the
      host-side address of all pci passthrough commands (by simply
      prepending it to the bus:slot.function format, as
      "dddd:bb:ss.f"). Since machines with multiple PCI domains are very
      rare, this never came up in practice, so libvirt was never updated to
      support it.
      
      This patch takes the first step to supporting specification of a non-0
      domain in the host-side address of PCI devices being assigned to a
      domain, by adding a capability bit to indicate support
      "QEMU_CAPS_HOST_PCI_MULTIDOMAIN", and detect it. Since this support
      was added in a version prior to the minimum version required for
      QMP-style capabilities detection, the capability is always enabled for
      any qemu that uses QMP for capabilities detection. For older qemus,
      the only clue that a domain can be specified in the host pci address
      is the presence of the string "[seg:]" in the help string for
      -pcidevice. (Ironically, libvirt will not be modified to support
      specification of domain for -pcidevice, since any qemu new enough for
      us to care about also supports "-device pci-assign" or "-device
      vfio-pci", which are greatly preferred).
      17133e37
    • J
      util: use typedefs for enums in "src/util/" directory · 1b14c449
      Julio Faracco 提交于
      In "src/util/" there are many enumeration (enum) declarations.
      Sometimes, it's better using a typedef for variable types,
      function types and other usages. Other enumeration will be
      changed to typedef's in the future.
      Signed-off-by: NJulio Faracco <jcfaracco@gmail.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      1b14c449
  6. 02 5月, 2014 1 次提交
  7. 01 5月, 2014 2 次提交
  8. 30 4月, 2014 1 次提交
  9. 29 4月, 2014 3 次提交
    • M
      qemu: properly quit migration with abort_on_error · 837154a1
      Martin Kletzander 提交于
      When EIO comes to qemu while it's replying to
      qemuMigrationUpdateJobStatus(), qemu blocks, the migration of RAM can
      complete in the meantime, and when qemu unblocks, it sends us
      BLOCK_IO_ERROR plus migrations "status": "complete".  Even though we
      act upon the BLOCK_IO_ERROR by setting the proper state of the domain,
      the call still waits for the proper reply on monitor for query_migrate
      and after it gets it, it checks that migration is completed and the
      migration is finished.  This is what abort_on_error flag was meant for
      (we can migrate with these errors, but this flag must inhibit such
      behaviour).  Changing the order of the steps guarantees the flag works
      properly.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1045833Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      837154a1
    • M
      qemu: don't call virFileExists() for network type disks · f6ec6af8
      Martin Kletzander 提交于
      Based on suggestion from Eric [1], because it might not get cleaned up
      before the release, so to avoid potential errors.
      
      [1] https://www.redhat.com/archives/libvir-list/2014-April/msg00929.htmlSigned-off-by: NMartin Kletzander <mkletzan@redhat.com>
      f6ec6af8
    • E
      drivers: use virDirRead API · ddcf4730
      Eric Blake 提交于
      Convert all remaining clients of readdir to use the new
      interface, so that we can ensure (unlikely) errors while
      reading a directory are reported.
      
      * src/openvz/openvz_conf.c (openvzAssignUUIDs): Use new
      interface.
      * src/parallels/parallels_storage.c (parallelsFindVolumes)
      (parallelsFindVmVolumes): Report readdir failures.
      * src/qemu/qemu_driver.c (qemuDomainSnapshotLoad): Ignore readdir
      failures.
      * src/secret/secret_driver.c (loadSecrets): Likewise.
      * src/qemu/qemu_hostdev.c
      (qemuHostdevHostSupportsPassthroughVFIO): Report readdir failures.
      * src/xen/xen_inotify.c (xenInotifyOpen): Likewise.
      * src/xen/xm_internal.c (xenXMConfigCacheRefresh): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ddcf4730
  10. 28 4月, 2014 1 次提交
    • J
      Recheck disk backing chains after snapshot · eec2f659
      Jiri Denemark 提交于
      When a snapshot operation finishes we have to recheck the backing chain
      of all disks involved in the snapshot. And we need to do that even if
      the operation failed because some of the disks might have changed if
      QEMU did not support transactions.
      eec2f659
  11. 27 4月, 2014 1 次提交
    • L
      network: centralize check for active network during interface attach · 34cc3b2f
      Laine Stump 提交于
      The check for a network being active during interface attach was being
      done individually in several places (by both the lxc driver and the
      qemu driver), but those places were too specific, leading to it *not*
      being checked when allocating a connection/device from a macvtap or
      hostdev network.
      
      This patch puts a single check in networkAllocateActualDevice(), which
      is always called before the any network interface is attached to any
      type of domain. It also removes all the other now-redundant checks
      from the lxc and qemu drivers.
      
      NB: the following patches are prerequisites for this patch, in the
      case that it is backported to any branch:
      
        440beeb7 network: fix virNetworkObjAssignDef and persistence
        8aaa5b68 network: create statedir during driver initialization
        b9e95491 network: change location of network state xml files
        411c5486 network: set macvtap/hostdev networks active if their state
                file exists
      
      This fixes:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=880483
      34cc3b2f
  12. 25 4月, 2014 6 次提交
  13. 24 4月, 2014 5 次提交