1. 25 3月, 2015 5 次提交
  2. 24 3月, 2015 3 次提交
  3. 23 3月, 2015 20 次提交
    • P
      qemu: Implement memory device hotunplug · 3b289a81
      Peter Krempa 提交于
      Add code to hot-remove memory devices from qemu. Unfortunately QEMU
      doesn't support this right now, so this is just for completenes.
      3b289a81
    • P
      qemu: Implement memory device hotplug · 9b4654f6
      Peter Krempa 提交于
      Add code to hot-add memory devices to running qemu instances.
      9b4654f6
    • P
      qemu: conf: Add support for memory device cold(un)plug · 96094fb2
      Peter Krempa 提交于
      Add a few helpers that allow to operate with memory device definitions
      on the domain config and use them to implement memory device coldplug in
      the qemu driver.
      96094fb2
    • P
      qemu: add support for memory devices · 8b54bffb
      Peter Krempa 提交于
      Add support to start qemu instance with 'pc-dimm' device. Thanks to the
      refactors we are able to reuse the existing function to determine the
      parameters.
      8b54bffb
    • P
      qemu: migration: Forbid migration with memory modules lacking info · c5710066
      Peter Krempa 提交于
      Make sure that libvirt has all vital information needed to reliably
      represent configuration of guest's memory devices in case of a
      migration.
      
      This patch forbids migration in case the required slot number and module
      base address are not present (failed to be loaded from qemu via
      monitor).
      c5710066
    • P
      qemu: memdev: Add infrastructure to load memory device information · 5cdfaa31
      Peter Krempa 提交于
      When using 'dimm' memory devices with qemu, some of the information
      like the slot number and base address need to be reloaded from qemu
      after process start so that it reflects the actual state. The state then
      allows to use memory devices across migrations.
      5cdfaa31
    • P
      conf: Add interface to parse and format memory device information · 3e4230d2
      Peter Krempa 提交于
      This patch adds code that parses and formats configuration for memory
      devices.
      
      A simple configuration would be:
      <memory model='dimm'>
        <target>
          <size unit='KiB'>524287</size>
          <node>0</node>
        </target>
      </memory>
      
      A complete configuration of a memory device:
      <memory model='dimm'>
        <source>
          <pagesize unit='KiB'>4096</pagesize>
          <nodemask>1-3</nodemask>
        </source>
        <target>
          <size unit='KiB'>524287</size>
          <node>1</node>
        </target>
      </memory>
      
      This patch preemptively forbids use of the <memory> device in individual
      drivers so the users are warned right away that the device is not
      supported.
      3e4230d2
    • P
      conf: Add device address type for dimm devices · 62b825a2
      Peter Krempa 提交于
      Dimm devices are described by the slot and base address. Add a new
      address type to be able to describe such address.
      62b825a2
    • P
      qemu: Implement setup of memory hotplug parameters · a41185d8
      Peter Krempa 提交于
      To enable memory hotplug the maximum memory size and slot count need to
      be specified. As qemu supports now other units than mebibytes when
      specifying memory, use the new interface in this case.
      a41185d8
    • P
      conf: Add support for parsing and formatting max memory and slot count · bffb9163
      Peter Krempa 提交于
      Add a XML element that will allow to specify maximum supportable memory
      and the count of memory slots to use with memory hotplug.
      
      To avoid possible confusion and misuse of the new element this patch
      also explicitly forbids the use of the maxMemory setting in individual
      drivers's post parse callbacks. This limitation will be lifted when the
      support is implemented.
      bffb9163
    • P
      libxl: Refactor logic in domain post parse callback · 19e85d84
      Peter Krempa 提交于
      With the current control flow the post parse callback returned success
      right away for fully virtualized VMs. To allow adding additional checks
      into the post parse callback tweak the conditions so that the function
      doesn't return early except for error cases.
      
      To clarify the original piece of code borrow the wording from the commit
      message for the patch that introduced the code.
      19e85d84
    • P
      qemu: monitor: Don't leak @props with non-JSON in qemuMonitorAddObject · b15f5883
      Peter Krempa 提交于
      The function comment states that @props is always consumed, even on
      failure. This was not true with the failure if the monitor is not using
      QMP.
      b15f5883
    • P
      qemu: Don't return memory device config on error in qemuBuildMemoryBackendStr · 104011ea
      Peter Krempa 提交于
      In the last section if the function determines that the config is
      invalid when QEMU doesn't support the memory device the JSON config
      object would be returned even if it doesn't make sense.
      
      Assign the object to be returned only on success.
      104011ea
    • B
      qemu: Set default SCSI controller model for S390 arch · c35b2776
      Boris Fiuczynski 提交于
      When no model is specified in the domain definition for
      a scsi controller and the architectur is s390 than virtio-scsi
      is set as default model.
      Signed-off-by: NBoris Fiuczynski <fiuczy@linux.vnet.ibm.com>
      Reviewed-by: NDaniel Hansel <daniel.hansel@linux.vnet.ibm.com>
      Reviewed-by: NStefan Zimmermann <stzi@linux.vnet.ibm.com>
      Reviewed-by: NJens Freimann <jfrei@linux.vnet.ibm.com>
      Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
      c35b2776
    • N
      Fix underlinking of libvirt_driver_interface.so · 6392a610
      Natanael Copa 提交于
      Always add udev linker flags when WITH_UDEV is enabled to avoid
      underlinking.
      
      See commit 43dbcb15 (interface: always build all available backends)
      Signed-off-by: NNatanael Copa <ncopa@alpinelinux.org>
      6392a610
    • M
      qemu: skip precreation of network disks · a1b18051
      Michael Chapman 提交于
      Commit cf54c606 introduced the ability
      to create missing storage volumes during migration. For network disks,
      however, we may not necessarily be able to detect whether they already
      exist -- there is no straight-forward way to map the disk to a storage
      volume, and even if there were it's possible no configured storage pool
      actually contains the disk.
      
      It is better to assume the network disk exists in this case, rather than
      aborting the migration completely. If the volume really is missing, QEMU
      will generate an appropriate error later in the migration.
      Signed-off-by: NMichael Chapman <mike@very.puzzling.org>
      a1b18051
    • M
      network_conf: Drop virNetworkObjIsDuplicate · d9706aea
      Michal Privoznik 提交于
      This function does not make any sense now, that network driver is
      (almost) dropped. I mean, previously, when threads were
      serialized, this function was there to check, if no other network
      with the same name or UUID exists. However, nowadays that threads
      can run more in parallel, this function is useless, in fact it
      gives misleading return values. Consider the following scenario.
      Two threads, both trying to define networks with same name but
      different UUID (e.g. because it was generated during XML parsing
      phase, whatever). Lets assume that both threads are about to call
      networkValidate() which immediately calls
      virNetworkObjIsDuplicate().
      
      T1: calls virNetworkObjIsDuplicate() and since no network with
      given name or UUID exist, success is returned.
      T2: calls virNetworkObjIsDuplicate() and since no network with
      given name or UUID exist, success is returned.
      
      T1: calls virNetworkAssignDef() and successfully places its
      network into the virNetworkObjList.
      T2: calls virNetworkAssignDef() and since network with the same
      name exists, the network definition is replaced.
      
      Okay, this is mainly because virNetworkAssignDef() does not check
      whether name and UUID matches. Well, lets make it so! And drop
      useless function too.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      d9706aea
    • M
      objecteventtest: Check for virNetwork* return values · cbbb9baa
      Michal Privoznik 提交于
      Lets not give a bad example and check for return values of
      virNetwork* APIs called within the test. Even though it's
      unlikely that any API will fail, it can happen. We're connected
      to the test driver after all, and our API sequence is correct. So
      test driver should fail only in case of bug or OOM.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      cbbb9baa
    • M
      networkStateInitialize: Don't lock network driver · dd7bfb2c
      Michal Privoznik 提交于
      There's no need to lock the network driver, as network driver
      initialization is done prior accepting any client. There's nobody
      to hop in and do something over partially initialized driver. Nor
      qemu driver is doing that.
      
      ==30532== Observed (incorrect) order is: acquisition of lock at 0x1439EF50
      ==30532==    at 0x4C31A26: pthread_mutex_lock (in /usr/lib64/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==30532==    by 0x5324895: virMutexLock (virthread.c:88)
      ==30532==    by 0x5307E86: virObjectLock (virobject.c:323)
      ==30532==    by 0x5396440: virNetworkObjListForEach (network_conf.c:4511)
      ==30532==    by 0x19B29308: networkStateInitialize (bridge_driver.c:686)
      ==30532==    by 0x53E1CCC: virStateInitialize (libvirt.c:777)
      ==30532==    by 0x11DEB7: daemonRunStateInit (libvirtd.c:906)
      ==30532==    by 0x5324B6A: virThreadHelper (virthread.c:197)
      ==30532==    by 0x4C30456: ??? (in /usr/lib64/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==30532==    by 0xA1EC1F2: start_thread (in /lib64/libpthread-2.19.so)
      ==30532==    by 0xA4EDC8C: clone (in /lib64/libc-2.19.so)
      ==30532==
      ==30532==  followed by a later acquisition of lock at 0x1439CD60
      ==30532==    at 0x4C31A26: pthread_mutex_lock (in /usr/lib64/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==30532==    by 0x5324895: virMutexLock (virthread.c:88)
      ==30532==    by 0x19B27B2C: networkDriverLock (bridge_driver.c:102)
      ==30532==    by 0x19B27B60: networkGetDnsmasqCaps (bridge_driver.c:113)
      ==30532==    by 0x19B2856A: networkUpdateState (bridge_driver.c:389)
      ==30532==    by 0x53963E9: virNetworkObjListForEachHelper (network_conf.c:4488)
      ==30532==    by 0x52E2224: virHashForEach (virhash.c:521)
      ==30532==    by 0x539645B: virNetworkObjListForEach (network_conf.c:4512)
      ==30532==    by 0x19B29308: networkStateInitialize (bridge_driver.c:686)
      ==30532==    by 0x53E1CCC: virStateInitialize (libvirt.c:777)
      ==30532==    by 0x11DEB7: daemonRunStateInit (libvirtd.c:906)
      ==30532==    by 0x5324B6A: virThreadHelper (virthread.c:197)
      ==30532==
      ==30532== Required order was established by acquisition of lock at 0x1439CD60
      ==30532==    at 0x4C31A26: pthread_mutex_lock (in /usr/lib64/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==30532==    by 0x5324895: virMutexLock (virthread.c:88)
      ==30532==    by 0x19B27B2C: networkDriverLock (bridge_driver.c:102)
      ==30532==    by 0x19B28DF9: networkStateInitialize (bridge_driver.c:609)
      ==30532==    by 0x53E1CCC: virStateInitialize (libvirt.c:777)
      ==30532==    by 0x11DEB7: daemonRunStateInit (libvirtd.c:906)
      ==30532==    by 0x5324B6A: virThreadHelper (virthread.c:197)
      ==30532==    by 0x4C30456: ??? (in /usr/lib64/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==30532==    by 0xA1EC1F2: start_thread (in /lib64/libpthread-2.19.so)
      ==30532==    by 0xA4EDC8C: clone (in /lib64/libc-2.19.so)
      ==30532==
      ==30532==  followed by a later acquisition of lock at 0x1439EF50
      ==30532==    at 0x4C31A26: pthread_mutex_lock (in /usr/lib64/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==30532==    by 0x5324895: virMutexLock (virthread.c:88)
      ==30532==    by 0x5307E86: virObjectLock (virobject.c:323)
      ==30532==    by 0x538A09C: virNetworkAssignDef (network_conf.c:527)
      ==30532==    by 0x5391EB2: virNetworkLoadState (network_conf.c:3008)
      ==30532==    by 0x53922D4: virNetworkLoadAllState (network_conf.c:3128)
      ==30532==    by 0x19B2929A: networkStateInitialize (bridge_driver.c:671)
      ==30532==    by 0x53E1CCC: virStateInitialize (libvirt.c:777)
      ==30532==    by 0x11DEB7: daemonRunStateInit (libvirtd.c:906)
      ==30532==    by 0x5324B6A: virThreadHelper (virthread.c:197)
      ==30532==    by 0x4C30456: ??? (in /usr/lib64/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==30532==    by 0xA1EC1F2: start_thread (in /lib64/libpthread-2.19.so)
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      dd7bfb2c
    • M
      Fix common misspellings · 0e7457e5
      Martin Kletzander 提交于
      Wikipedia's list of common misspellings [1] has a machine-readable
      version.  This patch fixes those misspellings mentioned in the list
      which don't have multiple right variants (as e.g. "accension", which can
      be both "accession" and "ascension"), such misspellings are left
      untouched.  The list of changes was manually re-checked for false
      positives.
      
      [1] https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machinesSigned-off-by: NMartin Kletzander <mkletzan@redhat.com>
      0e7457e5
  4. 20 3月, 2015 4 次提交
  5. 19 3月, 2015 8 次提交
    • M
      parallels: fix libvirt crash if parallelsNetworkOpen fails · a4da09d2
      Maxim Nestratov 提交于
      If, by any reason, parallelsNetworkOpen fails it dereferences
      newly allocated privconn->networks via virObjectUnref, which in
      turn deallocates its memory.
      Subsequent call of parallelsNetworkClose calls virObjectUnref
      that leads to double memory free. To prevent this we should zero
      privconn->networks to make all subsequent virObjectUnref be safe.
      Signed-off-by: NMaxim Nestratov <mnestratov@parallels.com>
      a4da09d2
    • L
      qemu: do not overwrite the error in qemuDomainObjExitMonitor · 4f068209
      Luyao Huang 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1196934
      
      When qemu exits during startup, libvirt includes the error from
      /var/log/libvirt/qemu/vm.log in the error message:
      
      $ virsh start test3
      error: Failed to start domain test3
      error: internal error: early end of file from monitor: possible problem:
      2015-02-27T03:03:16.985494Z qemu-kvm: -numa memdev is not supported by
      machine rhel6.5.0
      
      The check for domain liveness added to qemuDomainObjExitMonitor
      in commit dc2fd51f sometimes overwrites this error:
      $ virsh start test3
      error: Failed to start domain test3
      error: operation failed: domain is no longer running
      
      Fix the check to only report an error if there is none set.
      Signed-off-by: NLuyao Huang <lhuang@redhat.com>
      Signed-off-by: NJán Tomko <jtomko@redhat.com>
      4f068209
    • J
      libxl: Don't overwrite errors from xenconfig · bd235cd8
      Jim Fehlig 提交于
      When converting domXML from native, the libxl driver was overwriting
      useful errors from the xenconfig parsing code with a useless, generic
      error.  E.g. "internal error: parsing xm config failed" vs
      "internal error: config value usbdevice was malformed".  Remove the
      redundant (and useless) error reporting in the libxl driver.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      bd235cd8
    • J
      qemu: Fix two issues in qemuDomainSetVcpus error handling · e06e6f1e
      John Ferlan 提交于
      Issue #1 - A call to virBitmapNew did not check if the allocation
      failed which could lead to a NULL dereference
      
      Issue #2 - When deleting the pin entries from the config file, the
      code loops from the number of elements down to the "new" vcpu count;
      however, the pin id values are numbered 0..n-1 not 1..n, so the "first"
      pin attempt would never work. Luckily the check was for whether the
      incoming 'n' (vcpu id) matched the entry in the array from 0..arraysize
      rather than a dereference of the 'n' entry
      e06e6f1e
    • D
      doc: Fix doc for backingStore · 060f4c66
      Deepak Shetty 提交于
      I spent quite some time figuring that backingStore info
      isn't included in the dom xml, unless guest is up and
      running. Hopefully putting that in the doc should help.
      
      Also, several people have complained that libvirt reports
      a backing file as raw, even though they expected it to be
      qcow2; where the culprit is usually the user forgetting to
      create the file with qemu-img create -o backing_fmt=qcow2.
      
      This patch adds that info to the doc.
      Signed-off-by: NDeepak C Shetty <deepakcs@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      060f4c66
    • E
      qemu: track 'cancelling' migration state · e2660cb8
      Eric Blake 提交于
      In qemu 2.3, the migration status will include 'cancelling' in the
      window between when an asynchronous cancel has been requested and
      when the migration is actually halted.  Previously, qemu hid this
      state and reported 'active'.  Libvirt manages the sequence okay
      even when the string is unrecognized (that is, it will report an
      unknown state:
      
      Migration: [ 69 %]^Cerror: internal error: unexpected migration status in cancelling.
      
      but the migration is still cancelled), but recognizing the string
      makes for a smoother user experience.
      
      * src/qemu/qemu_monitor.h
      (QEMU_MONITOR_MIGRATION_STATUS_CANCELLING): Add enum.
      * src/qemu/qemu_monitor.c (qemuMonitorMigrationStatus): Map it.
      * src/qemu/qemu_migration.c (qemuMigrationUpdateJobStatus): Adjust
      clients.
      * src/qemu/qemu_monitor_json.c
      (qemuMonitorJSONGetMigrationStatusReply): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      e2660cb8
    • L
      util: more verbose error when failing to create macvtap device · 72423df9
      Laine Stump 提交于
      Investigation of a problem with creating passthrough macvtap devices
      (https://bugzilla.redhat.com/show_bug.cgi?id=1185501) has shown that
      this slightly more verbose failure message is useful. In particular,
      the mac address can be used to determine the domain. You could also
      figure this out by looking at preceding messages in a debug log, but
      this gets it in a single place.
      72423df9
    • L
      util: clean up #includes of virnetdevopenvswitch.h · 451547a4
      Laine Stump 提交于
      virnetdevopenvswitch.h declares a few functions that can be called to
      add ports to and remove them from OVS bridges, and retrieve the
      migration data for a port. It does not contain any data definitions
      that are used by domain_conf.h. But for some reason, domain_conf.h
      virnetdevopenvswitch.h should be directly #including it. This adds a
      few lines to the project, but saves all the files that don't need it
      from the extra computing, and makes the dependencies more clear cut.
      451547a4