1. 29 10月, 2014 17 次提交
    • T
      vbox: Rewrite vboxStorageVolCreateXML · 0cd409cd
      Taowei Luo 提交于
      If the <path> in target element is not given, libvirt will put the
      new volume in ~/.VirtualBox by default.
      0cd409cd
    • T
      vbox: Make CreateHardDisk support all vbox versions · 382e655d
      Taowei Luo 提交于
      The CreateHardDiskMedium only support create HardDisk for medium
      type, and it only works when vbox version >= 3.1. This patch make
      the function workable with all vbox versions and rename it as
      CreateHardDisk.
      
      In vbox 2.2 and 3.0 this function will create a IHardDisk object.
      In vbox later than 3.0, this function will create a IMedium object.
      382e655d
    • T
      vbox: Rewrite vboxStorageVolLookupByPath · fc41e003
      Taowei Luo 提交于
      fc41e003
    • T
      vbox: Make FindMedium support old vbox versions · 1599319c
      Taowei Luo 提交于
      In old version, function FindMedium in UIVirtualBox doesn't work
      for vbox2.2 and 3.0. We assume it will not be used when vbox in
      these versions.
      
      But when rewriting vboxStorageVolLookupByPath, we found it was
      compatibe to use FindMedium to get a IHardDisk object, even in
      vbox old versions. To achieve this, first make FindMedium call
      FindHardDisk when VBOX_API_VERSION < 4000000.
      Then change the argument type **IMedium to **IHardDisk. (As the
      rules in heriachy, we can't transfer a IHardDisk to match
      IMedium in output)
      
      In vbox 2.2 and 3.0, the caller must be aware that they will get
      a IHardDisk object in return.
      1599319c
    • T
      vbox: Rewrite vboxStorageVolLookupByKey · f67ae174
      Taowei Luo 提交于
      f67ae174
    • T
      vbox: Rewrite vboxStorageVolLookupByName · 8a8fa504
      Taowei Luo 提交于
      8a8fa504
    • T
      vbox: Rewrite vboxStoragePoolListVolumes · c3c8cd4f
      Taowei Luo 提交于
      c3c8cd4f
    • T
      vbox: Rewrite vboxStoragePoolNumOfVolumes · ce381d37
      Taowei Luo 提交于
      We use typedef IMedium IHardDisk to make IHardDisk hierachy from
      IMedium (Actually it did on vbox 2.2 and 3.0's C++ API).
      So when calling
          VBOX_MEDIUM_FUNC_ARG*(IHardDisk, func, args)
      we can directly replace it to
          gVBoxAPI.UIMedium.func(IHardDisk, args)
      
      When dealing with this two types, we get some rules from it's
      hierachy relationship.
      
      When using IHardDisk and IMedium as input, we can't transfer a
      IMedium to IHardDisk. Like:
          gVBoxAPI.UIHardDisk.func(IHardDisk *hardDisk, args)
          Here, we can't put a *IMedium as a argument.
      
      When using IHardDisk and IMedium as output, we can't transfer a
      IHardDisk to IMedium. Like:
          gVBoxAPI.UIMachine.GetMedium(IMedium **out)
          Here, we can't put a **IHardDisk as a argument. If this case
          do happen, we either change the API to GetHardDisk or write a
          new one.
      ce381d37
    • 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
    • S
      virsh: Improve the job type reported of virsh cmd blockcommit · d8415b54
      Shanzhi Yu 提交于
      When starting an active block commit job in virsh, it will report
      "Block Commit started", but for more precise message it could
      report "Active Block Commit started".
      Signed-off-by: NShanzhi Yu <shyu@redhat.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      d8415b54
    • 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 16 次提交
    • J
      tests: Add SELINUX_LIBS to fix viridentitytest linker bug · f2a2d0e9
      Julio Faracco 提交于
      In a clean build system (Ubuntu 14.04), the viridentitytest failed to compile.
      Even if all the SELINUX libraries and depedencies are installed. See the error
      message below:
      
      [...]
        CC       viridentitytest.o
        CCLD     viridentitytest
      /usr/bin/ld: viridentitytest.o: undefined reference to symbol
                                                             'security_disable'
      //lib/x86_64-linux-gnu/libselinux.so.1: error adding symbols: DSO missing
                                                                 from command line
      collect2: error: ld returned 1 exit status
      make: *** [viridentitytest] Error 1
      
      Simply adding the variable SELINUX_LIBS in viridentitytest rules of
      Makefile.am to include SELINUX libraries into viridentitytest solved that
      compilation issue.
      Signed-off-by: NJulio Faracco <jcfaracco@gmail.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      f2a2d0e9
    • S
      vbox: network: make sure driver is not NULL in virRegisterNetworkDriver · 22b18534
      Shanzhi Yu 提交于
      libvirtd will report below error if it does not make sure driver was not NULL
      in virRegisterNetworkDriver
      
      $ libvirtd
      2014-10-24 09:24:36.443+0000: 28876: info : libvirt version: 1.2.10
      2014-10-24 09:24:36.443+0000: 28876: error : virRegisterNetworkDriver:549 : driver in virRegisterNetworkDriver must not be NULL
      2014-10-24 09:24:36.443+0000: 28876: error : virDriverLoadModule:99 : Failed module registration vboxNetworkRegister
      Signed-off-by: NShanzhi Yu <shyu@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      22b18534
    • D
      Add new driver-*.h files to DRIVER_SOURCES · e8656ce1
      Daniel P. Berrange 提交于
      The recently added driver-*.h files were not listed in the
      Makefile.am causing them to be missed when creating dists.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      e8656ce1
    • D
      Fix indentation of sysinfo data · 0d36a5d0
      Daniel P. Berrange 提交于
      The <sysinfo> data block was indented by 2 spaces too many.
      This was missed because we never had any test validating
      the XML formatting.
      0d36a5d0
    • D
      Fix preprocessor indentation in libvirt.h.in · a0b6c98d
      Daniel P. Berrange 提交于
      The cfg.mk rule for checking preprocessor indentation was
      mistakenly missing the libvirt.h.in file due to bad file
      extension matching rule. Fix that and the resolve the
      incorrect indentation that is identified.
      a0b6c98d
    • D
      Move virConnect related APIs out of libvirt.h.in · bcec07b9
      Daniel P. Berrange 提交于
      Create a new libvirt-host.h file to hold the public
      API definitions for the virConnect type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      bcec07b9
    • D
      Move virDomain related APIs out of libvirt.h.in · 653a5e49
      Daniel P. Berrange 提交于
      Create a new libvirt-domain.h file to hold the public
      API definitions for the virDomain type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      653a5e49
    • D
      Move virEvent related APIs out of libvirt.h.in · 6d9c5f37
      Daniel P. Berrange 提交于
      Create a new libvirt-event.h file to hold the public
      API definitions for the virEvent type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      6d9c5f37
    • D
      Move virStoragePool/Vol related APIs out of libvirt.h.in · c9456e1a
      Daniel P. Berrange 提交于
      Create a new libvirt-storage.h file to hold the public
      API definitions for the virStorage/Vol type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      c9456e1a
    • D
      Move virStream related APIs out of libvirt.h.in · 2805ddb2
      Daniel P. Berrange 提交于
      Create a new libvirt-stream.h file to hold the public
      API definitions for the virStream type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      
      Note the definition of virStreamPtr is not moved, since that
      must be declared early for all other libvirt APIs to be able
      to reference it.
      2805ddb2
    • D
      Move virSecret related APIs out of libvirt.h.in · 75ff42fe
      Daniel P. Berrange 提交于
      Create a new libvirt-secret.h file to hold the public
      API definitions for the virSecret type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      75ff42fe
    • D
      Move virNodeDevice related APIs out of libvirt.h.in · 0147d6b8
      Daniel P. Berrange 提交于
      Create a new libvirt-nodedev.h file to hold the public
      API definitions for the virNodeDevice type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      0147d6b8
    • D
      Move virNWFilter related APIs out of libvirt.h.in · 40741984
      Daniel P. Berrange 提交于
      Create a new libvirt-nwfilter.h file to hold the public
      API definitions for the virNWFilter type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      40741984
    • D
      Move virInterface related APIs out of libvirt.h.in · fc964bfc
      Daniel P. Berrange 提交于
      Create a new libvirt-interface.h file to hold the public
      API definitions for the virInterface type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      fc964bfc
    • D
      Move virNetwork related APIs out of libvirt.h.in · 5c9789d2
      Daniel P. Berrange 提交于
      Create a new libvirt-network.h file to hold the public
      API definitions for the virNetwork type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      5c9789d2
    • D
      Move virDomainSnapshot related APIs out of libvirt.h.in · 84783d9d
      Daniel P. Berrange 提交于
      Create a new libvirt-domain-snapshot.h file to hold the public
      API definitions for the virDomainSnapshot type. This header
      file is not self-contained, so applications will not directly
      include it. They will continue to #include <libvirt/libvirt.h>
      84783d9d
  5. 24 10月, 2014 5 次提交