1. 21 10月, 2011 7 次提交
    • E
      virbuf: add auto-indentation support · fd9c052e
      Eric Blake 提交于
      Rather than having to adjust all callers in a chain to deal with
      indentation, it is nicer to have virBuffer do auto-indentation.
      
      * src/util/buf.h (_virBuffer): Increase size.
      (virBufferAdjustIndent, virBufferGetIndent): New prototypes.
      * src/libvirt_private.syms (buf.h): Export new functions.
      * src/util/buf.c (virBufferAdjustIndent, virBufferGetIndent): New
      functions.
      (virBufferSetError, virBufferAdd, virBufferAddChar)
      (virBufferVasprintf, virBufferStrcat, virBufferURIEncodeString):
      Implement auto-indentation.
      * tests/virbuftest.c (testBufAutoIndent): Test it.
      (testBufInfiniteLoop): Don't rely on internals.
      Idea by Daniel P. Berrange.
      fd9c052e
    • E
      virbuf: more detailed error reporting · 818a9665
      Eric Blake 提交于
      The next patch wants to add some sanity checking, which would
      be a different error than ENOMEM.  Many existing callers blindly
      report OOM failure if virBuf reports an error, and this will be
      wrong in the (unlikely) case that they actually had a usage error
      instead; but since the most common error really is ENOMEM, I'm
      not going to fix all callers.  Meanwhile, new discriminating
      callers can react differently depending on what failure happened.
      
      * src/util/buf.c (virBufferSetError): Add parameter.
      (virBufferGrow, virBufferVasprintf, virBufferEscapeString)
      (virBufferEscapeSexpr, virBufferEscapeShell): Adjust callers.
      818a9665
    • E
      virbuf: improve testsuite reporting · ef696300
      Eric Blake 提交于
      I had some temporary test failures while working on virbuf
      improvements in later patches, with output that looked like:
      
      Expected [<]
      Actual [  <]
      
      which is pretty hard to figure out.  Adding an Offset designation
      made it much easier to find which particular '<' was at the
      wrong indentation, to fix the right part of the code.
      
      * tests/testutils.c (virtTestDifference): Make it easier to
      diagnose test failures.
      ef696300
    • E
      virbuf: fix const-correctness · 5c09b81b
      Eric Blake 提交于
      Although the compiler wasn't complaining (since it was the pointer,
      rather than what was being pointed to, that was actually const), it
      looks quite suspicious to call a function with an argument labeled
      const when the nature of the pointer (virBufferPtr) is hidden behind
      a typedef.  Dropping const makes the function declarations easier
      to read.
      
      * src/util/buf.h: Drop const from all functions that modify buffer
      argument.
      * src/util/buf.c (virBufferSetError, virBufferAdd)
      (virBufferContentAndReset, virBufferFreeAndReset)
      (virBufferAsprintf, virBufferVasprintf, virBufferEscapeString)
      (virBufferEscapeSexpr, virBufferEscape): Fix fallout.
      5c09b81b
    • L
      docs: fix incorrect info about routed networks · 52e3b3d1
      Laine Stump 提交于
      In a recent expansion of the documentation on network forward modes, I
      incorrectly stated that incoming sessions to guests on routed networks
      were blocked. This is true for guests on NATed networks, but not
      routed. This patch corrects that error, and adds a pointer to the
      nwfilter page for those who do want to restrict incoming sessions to
      hosts on routed networks.
      52e3b3d1
    • T
      qemu: allow json in domxml-to-native · 755a09b5
      tangchen 提交于
      There is a little difference between the output of domxml-to-native and the actual commandline.
      No matter qemu is in control or readline mode, domxml-to-native always converts it to readline mode.
      
      That is because the parameter "monitor_json" for qemuBuildCommandLine() is always set to false
      in qemuDomainXMLToNative().
      Signed-off-by: Ntangchen <tangchen@cn.fujitsu.com>
      755a09b5
    • E
      docs: document managed=yes of hostdev passthrough · 10d3272e
      Eric Blake 提交于
      Clarify some of the effects of managed passthrough <hostdev> devices;
      with recent changes (commit d0935478), a nodedev-reattach is only needed
      to pair up to an explicit nodedev-dettach (but beware that older
      virt-manager has a bug where it uses explicit nodedev-dettach under the
      hood when using the gui to hotplug a hostdev device).
      
      * docs/formatdomain.html.in: Mention reattach.
      * tools/virsh.pod (nodedev): Mention managed mode.
      10d3272e
  2. 20 10月, 2011 4 次提交
  3. 19 10月, 2011 11 次提交
    • P
      qemu: Test name-space handling · aa84f966
      Philipp Hahn 提交于
      Add test cases for parsing the qemu-name-space.
      This is based on qemuxml2argv{test,data/}, but can not reside in
      qemuxml2argv{test,data/} because ...
      
      1. qemuxmlns-qemu-ns-domain.xml is not schema-valid and breaks
      domainschematest. The test is still important to detect xmlns:qemu
      bindings to a name-space other than
      http://libvirt.org/schemas/domain/qemu/1.0
      
      2. they break qemuxml2xml, because the xmlns:qemu binding is moved to
      the top-level <domain> element when converting from argv to xml.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      aa84f966
    • P
      qemu: Fix name-space handling · d1249910
      Philipp Hahn 提交于
      The XML parser for the qemu specific extensions expects the qemu name-space
      to be bound to the 'qemu' prefix. This is too strict, since the name of the
      name-space-prefix is only meant as an internal lookup key. Only the associated
      URI is relevant.
      <domain>...
        <qemu:commandline xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
        ...</qemu:commandline>
      </domain>
      
      <domain xmlns:ns0="http://libvirt.org/schemas/domain/qemu/1.0">...
        <ns0:commandline>
        ...</ns0:commandline>
      </domain>
      
      <domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
        <qemu:commandline xmlns:qemu="urn:foo">
        ...</qemu:commandline>
      </domain>
      
      Remove the test for checking the name-space binding on the top-level <domain>
      element. Registering the name-space with XPath is enough.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      d1249910
    • X
      compile: fix undefined reference to gnutls_x509_crt_get_dn with gcc-4.6.1 · 8f3d1669
      Xu He Jie 提交于
      When I compile libvirt with gcc-4.6.1 in ubuntu 11.10, got error as below:
      
        CCLD   libvirtd
      /usr/bin/ld: ../src/.libs/libvirt_driver_qemu.a(libvirt_driver_qemu_la-qemu_migration.o): undefined reference to symbol 'gnutls_x509_crt_get_dn@@GNUTLS_1_4'
      /usr/bin/ld: note: 'gnutls_x509_crt_get_dn@@GNUTLS_1_4' is defined in DSO /usr/lib/x86_64-linux-gnu/libgnutls.so so try adding it to the linker command line
      /usr/lib/x86_64-linux-gnu/libgnutls.so: could not read symbols: Invalid operation
      collect2: ld returned 1 exit status
      make[3]: *** [libvirtd] Error 1
      
      It can compile with gcc-4.5.2 in ubuntu 11.04, but it can not compile with gcc-4.6.1 in ubuntu 11.10.
      
      I didn't find reason. Does Anyone know the reason or the different between gcc-4.5.2 and gcc-4.6.1?
      
      I still provide a patch for this. Just make it is working now.
      Signed-off-by: Nsoulxu <soulxu@soulxu-ThinkPad-T410.(none)>
      8f3d1669
    • D
      Replace virBufferAdd with virBufferAddLit for const string · c005e523
      Daniel P. Berrange 提交于
      The statement
      
              virBufferAdd(buf, "''", 2);
      
      triggers a syntax-check warning
      
      * src/util/buf.c: Replace virBufferAdd with virBufferAddLit
      c005e523
    • P
      documentation: trivial spelling fix · 58d26a8e
      Philipp Hahn 提交于
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      58d26a8e
    • D
      Allow for URI aliases when connecting to libvirt · 777ffbd0
      Daniel P. Berrange 提交于
      This adds support for a libvirt client configuration file
      either /etc/libvirt/libvirt.conf for privileged clients,
      or $HOME/.libvirt/libvirt.conf for unprivileged clients.
      
      It allows one parameter
      
       uri_aliases = [
         "hail=qemu+ssh://root@hail.cloud.example.com/system",
         "sleet=qemu+ssh://root@sleet.cloud.example.com/system",
       ]
      
      Any call to virConnectOpen with a non-NULL URI will first
      attempt to match against the uri_aliases list. An application
      can disable this by using VIR_CONNECT_NO_ALIASES
      
      * docs/uri.html.in: Document URI aliases
      * include/libvirt/libvirt.h.in: Add VIR_CONNECT_NO_ALIASES
      * libvirt.spec.in, mingw32-libvirt.spec.in: Add /etc/libvirt/libvirt.conf
      * src/Makefile.am: Install default config file
      * src/libvirt.c: Add support for URI aliases
      * src/remote/remote_driver.c: Don't try to handle URIs
        with no scheme and which clearly are not paths
      * src/util/conf.c: Don't raise error on virConfFree(NULL)
      * src/xen/xen_driver.c: Don't raise error on URIs
        with no scheme
      777ffbd0
    • D
      Add support for autodestroy of guests to the LXC and UML drivers · 02e92dc4
      Daniel P. Berrange 提交于
      We recently added support for VIR_DOMAIN_START_AUTODESTROY and
      an impl to the QEMU driver. It is very desirable to support in
      other drivers, so this adds it to LXC and UML
      
      * src/lxc/lxc_conf.h, src/lxc/lxc_driver.c,
        src/uml/uml_conf.h, src/uml/uml_driver.c: Wire up autodestroy
        functions
      02e92dc4
    • G
      Use virBufferEscapeShell in cmdEcho · 07862822
      Guido Günther 提交于
      07862822
    • G
      46a11681
    • G
      virBufferEscapeShell: Emit quotes for the empty string · 04323fbc
      Guido Günther 提交于
      Make the empty string return '' to match cmdEcho's behavior.
      04323fbc
    • E
      snapshot: detect when qemu lacks disk-snapshot support · dad15a2e
      Eric Blake 提交于
      Noticed when testing new libvirt against old qemu that lacked the
      snapshot_blkdev HMP command.  Libvirt was mistakenly treating the
      command as successful, and re-writing the domain XML to use the
      just-created 0-byte file, rendering the domain broken on restart.
      
      * src/qemu/qemu_monitor_text.c (qemuMonitorTextDiskSnapshot):
      Notice another possible error message.
      * src/qemu/qemu_driver.c
      (qemuDomainSnapshotCreateSingleDiskActive): Don't keep 0-byte file
      on failure.
      dad15a2e
  4. 18 10月, 2011 6 次提交
    • G
      virBufferEscapeShell: Fix escaping of single quotes. · 94f776e7
      Guido Günther 提交于
      When checking if we need to escape a single quote we were looking at the
      character after the quote instead of at the quote itself.
      94f776e7
    • X
      compile: Add a missing function 'pciDeviceListFind' to libvirt_private.syms · de12bee7
      Xu He Jie 提交于
      compile error:
      ./src/.libs/libvirt_driver_qemu.a(libvirt_driver_qemu_la-qemu_hostdev.o): In function `qemuPrepareHostdevPCIDevices':
      /home/soulxu/data/work-code/libvirt/src/qemu/qemu_hostdev.c:183: undefined reference to `pciDeviceListFind'
      /home/soulxu/data/work-code/libvirt/src/qemu/qemu_hostdev.c:230: undefined reference to `pciDeviceListFind'
      ./src/.libs/libvirt_driver_qemu.a(libvirt_driver_qemu_la-qemu_hostdev.o): In function `qemuGetActivePciHostDeviceList':
      /home/soulxu/data/work-code/libvirt/src/qemu/qemu_hostdev.c:102: undefined reference to `pciDeviceListFind'
      ./src/.libs/libvirt_driver_qemu.a(libvirt_driver_qemu_la-qemu_hostdev.o): In function `qemuDomainReAttachHostdevDevices':
      /home/soulxu/data/work-code/libvirt/src/qemu/qemu_hostdev.c:370: undefined reference to `pciDeviceListFind'
      Signed-off-by: NXu He Jie <xuhj@linux.vnet.ibm.com>
      de12bee7
    • O
      qemu: Do not wait if the PCI device is not managed when reattaching · 7fb50e30
      Osier Yang 提交于
      Waiting for qemu-kvm cleaning up the PCI bar(s) mapping with long time
      while the device is not managed is just waste of time.
      7fb50e30
    • J
      Add AHCI support to qemu driver · c1bc3d89
      Jim Fehlig 提交于
      Tested with multiple AHCI controllers and multiple disks attached
      to a controller. E.g.,
      
          <disk type='file' device='disk'>
            <driver name='qemu' type='raw'/>
            <source file='/var/lib/libvirt/images/test/disk0.raw'/>
            <target dev='sda' bus='sata'/>
            <address type='drive' controller='0' bus='0' unit='0'/>
          </disk>
          <disk type='file' device='disk'>
            <driver name='qemu' type='raw'/>
            <source file='/var/lib/libvirt/images/test/disk1.raw'/>
            <target dev='sdb' bus='sata'/>
            <address type='drive' controller='0' bus='0' unit='1'/>
          </disk>
          <disk type='file' device='disk'>
            <driver name='qemu' type='raw'/>
            <source file='/var/lib/libvirt/images/test/disk2.raw'/>
            <target dev='sdc' bus='sata'/>
            <address type='drive' controller='1' bus='0' unit='0'/>
          </disk>
          <controller type='sata' index='0'>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
          </controller>
          <controller type='sata' index='1'>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
          </controller>
      c1bc3d89
    • E
      snapshot: implement LIST_LEAVES flag in esx · e570d7c4
      Eric Blake 提交于
      Relatively straight-forward filtering.
      
      * src/esx/esx_vi.h (esxVI_GetNumberOfSnapshotTrees)
      (esxVI_GetSnapshotTreeNames): Add parameter.
      * src/esx/esx_vi.c (esxVI_GetNumberOfSnapshotTrees)
      (esxVI_GetSnapshotTreeNames): Allow leaf filtering.
      * src/esx/esx_driver.c (esxDomainSnapshotNum)
      (esxDomainSnapshotListNames, esxDomainSnapshotNumChildren)
      (esxDomainSnapshotListChildrenNames): Pass new flag through.
      e570d7c4
    • P
      Fix virt-sanlock-cleanup documentation · 9f4b49cd
      Philipp Hahn 提交于
      The referenced page does not exist, but locking.html has a section about
      sanlock.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      9f4b49cd
  5. 17 10月, 2011 3 次提交
  6. 15 10月, 2011 7 次提交
    • W
      build: fix 'make dist' error · 1afcfbdd
      Wen Congyang 提交于
      When I run 'make dist', I receive the following error messages:
      make[1]: Entering directory `/home/wency/source/libvirt/src'
        GEN    remote/remote_protocol.h
        GEN    remote/remote_protocol.c
        GEN    remote/qemu_protocol.h
        GEN    remote/qemu_protocol.c
        GEN    remote/qemu_client_bodies.h
        CC     libvirt_driver_remote_la-remote_protocol.lo
      In file included from ./remote/remote_protocol.h:16,
                       from ./remote/remote_protocol.c:7:
      /internal.h:249:23: error: probes.h: No such file or directory
      make[1]: *** [libvirt_driver_remote_la-remote_protocol.lo] Error 1
      make[1]: Leaving directory `/home/wency/source/libvirt/src'
      make: *** [distdir] Error 1
      
      The reason is that we use probes.h before generating it.
      1afcfbdd
    • R
      Add missing strdup return value check · 7c23c34d
      Roopa Prabhu 提交于
      Check strdup return value and fail if error
      Signed-off-by: NRoopa Prabhu <roprabhu@cisco.com>
      7c23c34d
    • O
      qemu: Honor the orginal PCI dev properties when reattaching · d0935478
      Osier Yang 提交于
      BZ# https://bugzilla.redhat.com/show_bug.cgi?id=736214
      
      The problem is caused by the original info of domain's PCI dev is
      maintained by qemu_driver->activePciHostdevs list, (E.g. dev->reprobe,
      which stands for whether need to reprobe driver for the dev when do
      reattachment). The fields (dev->reprobe, dev->unbind_from_stub, and
      dev->remove_slot) are initialized properly when preparing the PCI
      device for managed attachment. However, when do reattachment, it
      construct a complete new "pciDevice" without honoring the original
      dev info, and thus the dev won't get the original driver or can get
      other problem.
      
      This patch is to fix the problem by get the devs from list
      driver->activePciHostdevs.
      
      Tested with following 3 scenarios:
        * the PCI was bound to some driver not pci-stub before attaching
      
          result: the device will be bound to the original driver
      
        * the PCI was bound to pci-stub before attaching
      
          result: no driver reprobing, and still bound to pci-stub
      
        * The PCI was not bound to any driver
      
          result: no driver reprobing, and still not bound to any driver.
      d0935478
    • R
      macvtap: avoid invalid free · 80b077ee
      Roopa Prabhu 提交于
      Commit 0472f39f plugged a leak, but introduced another bug:
      
      Actually looks like physfndev is conditionally allocated in getPhysfnDev
      Its better to modify getPhysfnDev to allocate physfndev every time.
      80b077ee
    • L
      docs: fix network XML documentation · 4040ff66
      Laine Stump 提交于
      A few people have attempted to use the new forwarding modes with older
      versions of libvirt. The docs where the modes are described have
      always stated the minimum required libvirt version, but the examples
      at the end didn't, which I believe is what has caused the confusion.
      
      Similarly, the section on portgroups now has a version tag added at
      the beginning.
      
      I also noticed that there was no example of defining a <dns> hostname,
      so I added one, as well as making the domain name example more
      recognizable (by adding ".com" to the domain).
      4040ff66
    • J
      Clarify semantics of virDomainMigrate2 · 5d784bd6
      Jiri Denemark 提交于
      Explicitly disallow conflicts between domain name from dxml and dname.
      5d784bd6
    • O
      qemu: Do not reattach PCI device used by other domain when shutdown · 24b8be89
      Osier Yang 提交于
      When failing on starting a domain, it tries to reattach all the PCI
      devices defined in the domain conf, regardless of whether the devices
      are still used by other domain. This will cause the devices to be deleted
      from the list qemu_driver->activePciHostdevs, thus the devices will be
      thought as usable even if it's not true. And following commands
      nodedev-{reattach,reset} will be successful.
      
      How to reproduce:
        1) Define two domains with same PCI device defined in the confs.
        2) # virsh start domain1
        3) # virsh start domain2
        4) # virsh nodedev-reattach $pci_device
      
      You will see the device will be reattached to host successfully.
      As pciDeviceReattach just check if the device is still used by
      other domain via checking if the device is in list driver->activePciHostdevs,
      however, the device is deleted from the list by step 2).
      
      This patch is to prohibit the bug by:
        1) Prohibit a domain starting or device attachment right at
           preparation period (qemuPrepareHostdevPCIDevices) if the
           device is in list driver->activePciHostdevs, which means
           it's used by other domain.
      
        2) Introduces a new field for struct _pciDevice, (const char *used_by),
           it will be set as the domain name at preparation period,
           (qemuPrepareHostdevPCIDevices). Thus we can prohibit deleting
           the device from driver->activePciHostdevs if it's still used by
           other domain when stopping the domain process.
      
      * src/pci.h (define two internal functions, pciDeviceSetUsedBy and
          pciDevceGetUsedBy)
      * src/pci.c (new field "const char *used_by" for struct _pciDevice,
          implementations for the two new functions)
      * src/libvirt_private.syms (Add the two new internal functions)
      * src/qemu_hostdev.h (Modify the definition of functions
          qemuPrepareHostdevPCIDevices, and qemuDomainReAttachHostdevDevices)
      * src/qemu_hostdev.c (Prohibit preparation and don't delete the
          device from activePciHostdevs list if it's still used by other domain)
      * src/qemu_hotplug.c (Update function usage, as the definitions are
          changed)
      Signed-off-by: NEric Blake <eblake@redhat.com>
      24b8be89
  7. 14 10月, 2011 2 次提交
    • P
      Xen: Fake versions in xencapstest · 435b9d99
      Philipp Hahn 提交于
      virInitialize() → xenRegister() → xenhypervisorInit() determines the
      version of the Hypervisor. This breaks xencapstest when building as root
      on a dom0 system, since xenHypervisorBuildCapabilities() adds the "hap"
      and "viridian" features based on the detected version.
      
      Add an optional parameter to xenhypervisorInit() to disable automatic
      detection of the Hypervisor version. The passed in arguments are used
      instead.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      435b9d99
    • P
      Xen: move versions to struct · 618758c9
      Philipp Hahn 提交于
      Calling virInitialize() → xenRegister() → xenhypervisorInit() directly
      opens a connection to the Xen Hypervisor, which breaks some unit tests.
      
      Move all static variables into a struct to make it easier to override
      them when testing.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      618758c9