1. 29 10月, 2014 8 次提交
    • T
      vbox: Rewrite vbox-independent functions · 459886d4
      Taowei Luo 提交于
      This patch rewrites the following functions
          *vboxStorageOpen
          *vboxStorageClose
          *vboxConnectNumOfStoragePools
          *vboxConnectListStoragePools
          *vboxStoragePoolLookupByName
      
      These functions do not call any vbox API, so I directly move it
      from vbox_tmpl.c to vbox_storage.c
      
      A small improvement is made on vboxConnectListStoragePools.
      The if condition nnames == 1 is modified to nnames > 0. So if the
      caller put more than one slot to get active storage pools, the new
      function will return exactly one, while the old one would only
      return 0.
      459886d4
    • T
      vbox: move common codes to vbox_common.h · 7d5b9419
      Taowei Luo 提交于
      There are lots of macro declarations in vbox_common.c,
      vbox_network.c, and the coming vbox_storage.c which simply the API
      calling. Since they are totally the same. We shouldn't keep three
      copies of that, so they are moved to vbox_common.h.
      
      Note: The macros are quite different from those in vbox_tmpl.c,
            because they are using different API.
      7d5b9419
    • T
      vbox: Remove VBOX_OBJECT_CHECK macro · a6b1cde3
      Taowei Luo 提交于
      We should follow the rules that CHECK macro only do checking works.
      But this VBOX_OBJECT_CHECK and VBOX_OBJECT_HOST_CHECK declared some
      varibles at the same time, which broke the rule. So the patch
      removed this macros and dispatched it in source code.
      
      The storage driver is still not rewriten at this point. So, I
      remains the VBOX_OBJECT_CHECK macro in vbox_tmpl.c. But this will
      finally be removed in patch 'vbox: Remove unused things in vbox_tmpl.c'
      a6b1cde3
    • T
      vbox: Fix copyright mistake · c5cc26e6
      Taowei Luo 提交于
      I made a mistake on copyright in patch 7f0f415b.
      
      If I copied codes from one file to another, I should copy the
      copyright announcement as well. So this patch makes up the
      copyright which I should have added in the previous patch.
      c5cc26e6
    • C
      Renamed internal __mon_yday into mon_yday to avoid conflicts · 90712bb5
      Cédric Bosdonnat 提交于
      libc has another constant with the same name, which leads to
      redefinition error when building against static libvirt
      90712bb5
    • M
      qemu_agent: Produce more readable error messages · b7fe5a65
      Michal Privoznik 提交于
      Not every error message from qemu-ga has to have the 'class' field
      filled out. For instance, I've seen this error message lately:
      
        qemuAgentCheckError:1047 : unable to execute QEMU agent command \
        {"execute":"guest-set-time"}: \
        {"error":{"desc":"Invalid parameter type, expected: integer"}}
      
      However, this got translated into rather generic error message:
      
        internal error: unable to execute QEMU agent command
        'guest-set-time': unknown QEMU command error
      
      So we've dropped better error message in favor of a generic one.
      This is due to our code which expects 'class' which is not
      present here.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      b7fe5a65
    • T
      qemu: change macvtap multicast list in response to NIC_RX_FILTER_CHANGED · d70cc1fa
      Tony Krowiak 提交于
      This patch adds functionality to processNicRxFilterChangedEvent().
      The old and new multicast lists are compared and the filters in
      the macvtap are programmed to match the guest's filters.
      Signed-off-by: NTony Krowiak <akrowiak@linux.vnet.ibm.com>
      d70cc1fa
    • T
      util: Functions to update host network device's multicast filter · cc0e8c24
      Tony Krowiak 提交于
      This patch provides the utility functions to needed to synchronize the
      changes made to a guest domain network device's multicast filter
      with the corresponding macvtap device's filter on the host:
      
      * Get/add/remove multicast MAC addresses
      * Get the macvtap device's RX filter list
      Signed-off-by: NTony Krowiak <akrowiak@linux.vnet.ibm.com>
      Signed-off-by: NLaine Stump <laine@laine.org>
      cc0e8c24
  2. 28 10月, 2014 1 次提交
    • E
      qemu: forbid snapshot-delete --children-only on external snapshot · 2086a990
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=956506 documents that
      given a domain where an internal snapshot parent has an external
      snapshot child, we lacked a safety check when trying to use the
      --children-only option to snapshot-delete:
      
      $ virsh start dom
      $ virsh snapshot-create-as dom internal
      $ virsh snapshot-create-as dom external --disk-only
      $ virsh snapshot-delete dom external
      error: Failed to delete snapshot external
      error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
      $ virsh snapshot-delete dom internal --children
      error: Failed to delete snapshot internal
      error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
      $ virsh snapshot-delete dom internal --children-only
      Domain snapshot internal children deleted
      
      While I'd still like to see patches that actually do proper external
      snapshot deletion, we should at least fix the inconsistency in the
      meantime.  With this patch:
      
      $ virsh snapshot-delete dom internal --children-only
      error: Failed to delete snapshot internal
      error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
      
      * src/qemu/qemu_driver.c (qemuDomainSnapshotDelete): Fix condition.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      2086a990
  3. 27 10月, 2014 1 次提交
    • L
      util: eliminate "use after free" in callers of virNetDevLinkDump · f9f9699f
      Laine Stump 提交于
      virNetDevLinkDump() gets a message from netlink into "resp", then
      calls nlmsg_parse() to fill the table "tb" with pointers into resp. It
      then returns tb to its caller, but not before freeing the buffer at
      resp. That means that all the callers of virNetDevLinkDump() are
      examining memory that has already been freed. This can be verified by
      filling the buffer at resp with garbage prior to freeing it (or, I
      suppose, just running libvirtd under valgrind) then performing some
      operation that calls virNetDevLinkDump().
      
      The code has been like this ever since virNetDevLinkDump() was written
      - the original author didn't notice it, and neither did later
      additional users of the function. It has only been pure luck (or maybe
      a lack of heavy load, and/or maybe an allocation algorithm in malloc()
      that delays re-use of just-freed memory) that has kept this from
      causing errors, for example when configuring a PCI passthrough or
      macvtap passthrough network interface.
      
      The solution taken in this patch is the simplest - just return resp to
      the caller along with tb, then have the caller free it after they are
      finished using the data (pointers) in tb. I alternately could have
      made a cleaner interface by creating a new struct that put tb and resp
      together along with a vir*Free() function for it, but this function is
      only used in a couple places, and I'm not sure there will be
      additional new uses of virNetDevLinkDump(), so the value of adding a
      new type, extra APIs, etc. is dubious.
      f9f9699f
  4. 25 10月, 2014 3 次提交
  5. 24 10月, 2014 12 次提交
  6. 23 10月, 2014 3 次提交
  7. 22 10月, 2014 5 次提交
    • P
      qemu: migration: Make check for empty hook XML robust · 19b1ee42
      Peter Krempa 提交于
      Also consider whitespace only strings returned from the hook as empty
      result.
      19b1ee42
    • P
      qemu: restore: Fix restoring of VM when the restore hook returns empty XML · e3867799
      Peter Krempa 提交于
      The documentation for the restore hook states that returning an empty
      XML is equivalent with copying the input. There was a bug in the code
      checking the returned string by checking the string instead of the
      contents. Use the new helper to check if the string is empty.
      e3867799
    • P
      util: string: Add helper to check whether string is empty · 0eeafeed
      Peter Krempa 提交于
      The helper checks whether a string contains only whitespace or is NULL.
      This will be helpful to skip cases where a user string is optional, but
      may be provided empty with the same meaning.
      0eeafeed
    • R
      Add support for /run/initctl · 7e037f64
      Rick Harris 提交于
      Newer versions of Debian use '/run/initctl' instead of '/dev/initctl'.
      This patch updates the code to search for the FIFO from a list of
      well-known locations.
      7e037f64
    • R
      Fix cast errors with clang · 82e4f85c
      Roman Bogorodskiy 提交于
      Build with clang fails with:
      
        CC       util/libvirt_util_la-virsocketaddr.lo
      util/virsocketaddr.c:904:17: error: cast from 'struct sockaddr *' to
      'struct sockaddr_in *' increases required alignment from 1 to 4
      [-Werror,-Wcast-align]
              inet4 = (struct sockaddr_in*) res->ai_addr;
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      util/virsocketaddr.c:909:17: error: cast from 'struct sockaddr *' to
      'struct sockaddr_in6 *' increases required alignment from 1 to 4
      [-Werror,-Wcast-align]
              inet6 = (struct sockaddr_in6*) res->ai_addr;
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      2 errors generated.
      
      Fix that by replacing virSocketAddrParseInternal() call with
      virSocketAddrParse() in the virSocketAddrIsNumericLocalhost() function.
      virSocketAddrParse stores an address in virSocketAddr.
      virSocketAddr uses a union to store an address, so it doesn't
      need casting.
      82e4f85c
  8. 21 10月, 2014 3 次提交
    • M
      qemu: unref cfg after TerminateMachine has been called · 9661ac2f
      Martin Kletzander 提交于
      Commit 4882618e added the code that
      requests driver cfg, but forgot to unref it.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      9661ac2f
    • L
      qemu: x86_64 is good enough for i686 · afe8f420
      Lubomir Rintel 提交于
      virt-manager on Fedora sets up i686 hosts with "/usr/bin/qemu-kvm" emulator,
      which in turn unconditionally execs qemu-system-x86_64 querying capabilities
      then fails:
      
      Error launching details: invalid argument: architecture from emulator 'x86_64' doesn't match given architecture 'i686'
      
      Traceback (most recent call last):
        File "/usr/share/virt-manager/virtManager/engine.py", line 748, in _show_vm_helper
          details = self._get_details_dialog(uri, vm.get_connkey())
        File "/usr/share/virt-manager/virtManager/engine.py", line 726, in _get_details_dialog
          obj = vmmDetails(conn.get_vm(connkey))
        File "/usr/share/virt-manager/virtManager/details.py", line 399, in __init__
          self.init_details()
        File "/usr/share/virt-manager/virtManager/details.py", line 784, in init_details
          domcaps = self.vm.get_domain_capabilities()
        File "/usr/share/virt-manager/virtManager/domain.py", line 518, in get_domain_capabilities
          self.get_xmlobj().os.machine, self.get_xmlobj().type)
        File "/usr/lib/python2.7/site-packages/libvirt.py", line 3492, in getDomainCapabilities
          if ret is None: raise libvirtError ('virConnectGetDomainCapabilities() failed', conn=self)
      libvirtError: invalid argument: architecture from emulator 'x86_64' doesn't match given architecture 'i686'
      
      Journal:
      
      Oct 16 21:08:26 goatlord.localdomain libvirtd[1530]: invalid argument: architecture from emulator 'x86_64' doesn't match given architecture 'i686'
      afe8f420
    • Z
      qemu: move setting emulatorpin ahead of monitor showing up · 411cea63
      Zhou yimin 提交于
      If VM is configured with many devices(including passthrough devices)
      and large memory, libvirtd will take seconds(in the worst case) to
      wait for monitor. In this period the qemu process may run on any
      PCPU though I intend to pin emulator to the specified PCPU in xml
      configuration.
      
      Actually qemu process takes high cpu usage during vm startup.
      So this is not the strict CPU isolation in this case.
      Signed-off-by: NZhou yimin <zhouyimin@huawei.com>
      411cea63
  9. 20 10月, 2014 1 次提交
  10. 17 10月, 2014 1 次提交
  11. 15 10月, 2014 2 次提交