1. 22 5月, 2012 2 次提交
    • W
      storage backend: Add RBD (RADOS Block Device) support · 74951ead
      Wido den Hollander 提交于
      This patch adds support for a new storage backend with RBD support.
      
      RBD is the RADOS Block Device and is part of the Ceph distributed storage
      system.
      
      It comes in two flavours: Qemu-RBD and Kernel RBD, this storage backend only
      supports Qemu-RBD, thus limiting the use of this storage driver to Qemu only.
      
      To function this backend relies on librbd and librados being present on the
      local system.
      
      The backend also supports Cephx authentication for safe authentication with
      the Ceph cluster.
      
      For storing credentials it uses the built-in secret mechanism of libvirt.
      Signed-off-by: NWido den Hollander <wido@widodh.nl>
      74951ead
    • D
      Fix potential events deadlock when unref'ing virConnectPtr · 2cb0899e
      Daniel P. Berrange 提交于
      When the last reference to a virConnectPtr is released by
      libvirtd, it was possible for a deadlock to occur in the
      virDomainEventState functions. The virDomainEventStatePtr
      holds a reference on virConnectPtr for each registered
      callback. When removing a callback, the virUnrefConnect
      function is run. If this causes the last reference on the
      virConnectPtr to be released, then virReleaseConnect can
      be run, which in turns calls qemudClose. This function has
      a call to virDomainEventStateDeregisterConn which is intended
      to remove all callbacks associated with the virConnectPtr
      instance. This will try to grab a lock on virDomainEventState
      but this lock is already held. Deadlock ensues
      
      Thread 1 (Thread 0x7fcbb526a840 (LWP 23185)):
      
      Since each callback associated with a virConnectPtr holds a
      reference on virConnectPtr, it is impossible for the qemudClose
      method to be invoked while any callbacks are still registered.
      Thus the call to virDomainEventStateDeregisterConn must in fact
      be a no-op. Thus it is possible to just remove all trace of
      virDomainEventStateDeregisterConn and avoid the deadlock.
      
      * src/conf/domain_event.c, src/conf/domain_event.h,
        src/libvirt_private.syms: Delete virDomainEventStateDeregisterConn
      * src/libxl/libxl_driver.c, src/lxc/lxc_driver.c,
        src/qemu/qemu_driver.c, src/uml/uml_driver.c: Remove
        calls to virDomainEventStateDeregisterConn
      2cb0899e
  2. 21 5月, 2012 1 次提交
    • S
      nwfilter: Add support for ipset · a3f3ab4c
      Stefan Berger 提交于
      This patch adds support for the recent ipset iptables extension
      to libvirt's nwfilter subsystem. Ipset allows to maintain 'sets'
      of IP addresses, ports and other packet parameters and allows for
      faster lookup (in the order of O(1) vs. O(n)) and rule evaluation
      to achieve higher throughput than what can be achieved with
      individual iptables rules.
      
      On the command line iptables supports ipset using
      
      iptables ... -m set --match-set <ipset name> <flags> -j ...
      
      where 'ipset name' is the name of a previously created ipset and
      flags is a comma-separated list of up to 6 flags. Flags use 'src' and 'dst'
      for selecting IP addresses, ports etc. from the source or
      destination part of a packet. So a concrete example may look like this:
      
      iptables -A INPUT -m set --match-set test src,src -j ACCEPT
      
      Since ipset management is quite complex, the idea was to leave ipset 
      management outside of libvirt but still allow users to reference an ipset.
      The user would have to make sure the ipset is available once the VM is
      started so that the iptables rule(s) referencing the ipset can be created.
      
      Using XML to describe an ipset in an nwfilter rule would then look as
      follows:
      
        <rule action='accept' direction='in'>
          <all ipset='test' ipsetflags='src,src'/>
        </rule>
      
      The two parameters on the command line are also the two distinct XML attributes
      'ipset' and 'ipsetflags'.
      
      FYI: Here is the man page for ipset:
      
      https://ipset.netfilter.org/ipset.man.html
      
      Regards,
          Stefan
      a3f3ab4c
  3. 18 5月, 2012 1 次提交
  4. 16 5月, 2012 2 次提交
  5. 10 5月, 2012 2 次提交
    • A
      conf: Fix memory leaks in virStoragePoolDefParseSource · 15e0b20a
      Alex Jia 提交于
      Detected by valgrind. Leaks are introduced in commit 122fa379.
      
      src/conf/storage_conf.c: fix memory leaks.
      
      How to reproduce?
      $ make && make -C tests check TESTS=storagepoolxml2xmltest
      $ cd tests && valgrind -v --leak-check=full ./storagepoolxml2xmltest
      
      actual result:
      ==28571== LEAK SUMMARY:
      ==28571==    definitely lost: 40 bytes in 5 blocks
      ==28571==    indirectly lost: 0 bytes in 0 blocks
      ==28571==      possibly lost: 0 bytes in 0 blocks
      ==28571==    still reachable: 1,054 bytes in 21 blocks
      ==28571==         suppressed: 0 bytes in 0 blocks
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      15e0b20a
    • J
      Report error when parsing character device target type · 10a87145
      Jim Fehlig 提交于
      No useful error was being reported when an invalid character device
      target type is specified in the domainXML. E.g.
      
          ...
          <console type="pty">
            <source path="/dev/pts/2"/>
            <target type="kvm" port="0"/>
          </console>
          ...
      
      resulted in
      
      error: Failed to define domain from x.xml
      error: An error occurred, but the cause is unknown
      
      With this small patch, the error is more helpful
      
      error: Failed to define domain from x.xml
      error: XML error: unknown target type 'kvm' specified for character device
      10a87145
  6. 09 5月, 2012 4 次提交
    • O
      numad: Always output 'placement' of <vcpu> · d70f2e11
      Osier Yang 提交于
      <vcpu> is not an optional node. The value for its 'placement'
      actually always defaults to 'static' in the underlying codes.
      (Even no 'cpuset' and 'placement' is specified, the domain
      process will be pinned to all the available pCPUs).
      d70f2e11
    • O
      numad: Copy 'placement' of <numatune> to <vcpu> by default · 8d26a7fd
      Osier Yang 提交于
      With this patch, one can also fully drive numad by:
      
        <vcpu>2</vcpu>
        <numatune>
          <memory placement='auto'/>
        </numatune>
      
      New tests are added.
      8d26a7fd
    • O
      numad: Set memory policy from numad advisory nodeset · 97010eb1
      Osier Yang 提交于
      Though numad will manage the memory allocation of task dynamically,
      it wants management application (libvirt) to pre-set the memory
      policy according to the advisory nodeset returned from querying numad,
      (just like pre-bind CPU nodeset for domain process), and thus the
      performance could benefit much more from it.
      
      This patch introduces new XML tag 'placement', value 'auto' indicates
      whether to set the memory policy with the advisory nodeset from numad,
      and its value defaults to the value of <vcpu> placement, or 'static'
      if 'nodeset' is specified. Example of the new XML tag's usage:
      
        <numatune>
          <memory placement='auto' mode='interleave'/>
        </numatune>
      
      Just like what current "numatune" does, the 'auto' numa memory policy
      setting uses libnuma's API too.
      
      If <vcpu> "placement" is "auto", and <numatune> is not specified
      explicitly, a default <numatume> will be added with "placement"
      set as "auto", and "mode" set as "strict".
      
      The following XML can now fully drive numad:
      
      1) <vcpu> placement is 'auto', no <numatune> is specified.
      
         <vcpu placement='auto'>10</vcpu>
      
      2) <vcpu> placement is 'auto', no 'placement' is specified for
         <numatune>.
      
         <vcpu placement='auto'>10</vcpu>
         <numatune>
           <memory mode='interleave'/>
         </numatune>
      
      And it's also able to control the CPU placement and memory policy
      independently. e.g.
      
      1) <vcpu> placement is 'auto', and <numatune> placement is 'static'
      
         <vcpu placement='auto'>10</vcpu>
         <numatune>
           <memory mode='strict' nodeset='0-10,^7'/>
         </numatune>
      
      2) <vcpu> placement is 'static', and <numatune> placement is 'auto'
      
         <vcpu placement='static' cpuset='0-24,^12'>10</vcpu>
         <numatune>
           <memory mode='interleave' placement='auto'/>
         </numatume>
      
      A follow up patch will change the XML formatting codes to always output
      'placement' for <vcpu>, even it's 'static'.
      97010eb1
    • A
      domain_conf: add "default" to list of valid spice channels · ba97e4ed
      Alon Levy 提交于
      qemu's behavior in this case is to change the spice server behavior to
      require secure connection to any channel not otherwise specified as
      being in plaintext mode. libvirt doesn't currently allow requesting this
      (via plaintext-channel=<channel name>).
      
      RHBZ: 819499
      Signed-off-by: NAlon Levy <alevy@redhat.com>
      ba97e4ed
  7. 08 5月, 2012 1 次提交
  8. 03 5月, 2012 1 次提交
  9. 01 5月, 2012 1 次提交
    • E
      storage: fix build with iscsi · 29e702e5
      Eric Blake 提交于
      The previous storage patch missed an instance affected by the struct
      member rename.  It also had some botched whitespace detected by
      'make check'.
      
      * src/storage/storage_backend_iscsi.c
      (virStorageBackendISCSIFindPoolSources): Adjust to new struct.
      * src/conf/storage_conf.c (virStoragePoolSourceFormat): Fix
      indentation.
      29e702e5
  10. 30 4月, 2012 2 次提交
  11. 28 4月, 2012 1 次提交
    • S
      More coverity findings addressed · 59b935f5
      Stefan Berger 提交于
      More bug extermination in the category of:
      
      Error: CHECKED_RETURN:
      
      /libvirt/src/conf/network_conf.c:595:
      check_return: Calling function "virAsprintf" without checking return value (as is done elsewhere 515 out of 543 times).
      
      /libvirt/src/qemu/qemu_process.c:2780:
      unchecked_value: No check of the return value of "virAsprintf(&msg, "was paused (%s)", virDomainPausedReasonTypeToString(reason))".
      
      /libvirt/tests/commandtest.c:809:
      check_return: Calling function "setsid" without checking return value (as is done elsewhere 4 out of 5 times).
      
      /libvirt/tests/commandtest.c:830:
      unchecked_value: No check of the return value of "virTestGetDebug()".
      
      /libvirt/tests/commandtest.c:831:
      check_return: Calling function "virTestGetVerbose" without checking return value (as is done elsewhere 41 out of 42 times).
      
      /libvirt/tests/commandtest.c:833:
      check_return: Calling function "virInitialize" without checking return value (as is done elsewhere 18 out of 21 times).
      
      
      One note about the error in commandtest line 809: setsid() seems to fail when running the test -- could be removed ?
      59b935f5
  12. 27 4月, 2012 2 次提交
    • S
      nwfilter: address more coverity findings · 42548fbf
      Stefan Berger 提交于
      This patch addresses the following coverity findings:
      
      /libvirt/src/conf/nwfilter_params.c:390:
      var_assigned: Assigning: "varValue" = null return value from "virHashLookup".
      
      /libvirt/src/conf/nwfilter_params.c:392:
      dereference: Dereferencing a pointer that might be null "varValue" when calling "virNWFilterVarValueGetNthValue".
      
      /libvirt/src/conf/nwfilter_params.c:399:
      dereference: Dereferencing a pointer that might be null "tmp" when calling "virNWFilterVarValueGetNthValue".
      42548fbf
    • S
      nwfilter: address coverity findings · 9c1ce3dc
      Stefan Berger 提交于
      This patch addresses the following coverity findings:
      
      /libvirt/src/conf/nwfilter_params.c:157:
      deref_parm: Directly dereferencing parameter "val".
      
      /libvirt/src/conf/nwfilter_params.c:473:
      negative_returns: Using variable "iterIndex" as an index to array "res->iter".
      
      /libvirt/src/nwfilter/nwfilter_ebiptables_driver.c:2891:
      unchecked_value: No check of the return value of "virAsprintf(&protostr, "-d 01:80:c2:00:00:00 ")".
      
      /libvirt/src/nwfilter/nwfilter_ebiptables_driver.c:2894:
      unchecked_value: No check of the return value of "virAsprintf(&protostr, "-p 0x%04x ", l3_protocols[protoidx].attr)".
      
      /libvirt/src/nwfilter/nwfilter_ebiptables_driver.c:3590:
      var_deref_op: Dereferencing null variable "inst".
      9c1ce3dc
  13. 23 4月, 2012 1 次提交
    • E
      blockjob: enhance xml to track mirrors across libvirtd restart · ae6aa8c3
      Eric Blake 提交于
      In order to track a block copy job across libvirtd restarts, we
      need to save internal XML that tracks the name of the file
      holding the mirror.  Displaying this name in dumpxml might also
      be useful to the user, even if we don't yet have a way to (re-)
      start a domain with mirroring enabled up front.  This is done
      with a new <mirror> sub-element to <disk>, as in:
      
          <disk type='file' device='disk'>
            <driver name='qemu' type='raw'/>
            <source file='/var/lib/libvirt/images/original.img'/>
            <mirror file='/var/lib/libvirt/images/copy.img' format='qcow2' ready='yes'/>
            ...
          </disk>
      
      For now, the element is output-only, in live domains; it is ignored
      when defining a domain or hot-plugging a disk (since those contexts
      use VIR_DOMAIN_XML_INACTIVE in parsing).  The 'ready' attribute appears
      when libvirt knows that the job has changed from the initial pulling
      phase over to the mirroring phase, although absence of the attribute
      is not a sure indicator of the current phase.  If we come up with a way
      to make qemu start with mirroring enabled, we can relax the xml
      restriction, and allow <mirror> (but not attribute 'ready') on input.
      Testing active-only XML meant tweaking the testsuite slightly, but it
      was worth it.
      
      * docs/schemas/domaincommon.rng (diskspec): Add diskMirror.
      * docs/formatdomain.html.in (elementsDisks): Document it.
      * src/conf/domain_conf.h (_virDomainDiskDef): New members.
      * src/conf/domain_conf.c (virDomainDiskDefFree): Clean them.
      (virDomainDiskDefParseXML): Parse them, but only internally.
      (virDomainDiskDefFormat): Output them.
      * tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml: New test file.
      * tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror.xml: Likewise.
      * tests/qemuxml2xmltest.c (testInfo): Alter members.
      (testCompareXMLToXMLHelper): Allow more test control.
      (mymain): Run new test.
      ae6aa8c3
  14. 20 4月, 2012 2 次提交
    • E
      conf: remove redundant () · 6877a34d
      Eric Blake 提交于
      I almost copied-and-pasted some redundant () into my new code,
      and figured a general cleanup prereq patch would be better instead.
      
      No semantic change.
      
      * src/conf/domain_conf.c (virDomainLeaseDefParseXML)
      (virDomainDiskDefParseXML, virDomainFSDefParseXML)
      (virDomainActualNetDefParseXML, virDomainNetDefParseXML)
      (virDomainGraphicsDefParseXML, virDomainVideoAccelDefParseXML)
      (virDomainVideoDefParseXML, virDomainHostdevFind)
      (virDomainControllerInsertPreAlloced, virDomainDefParseXML)
      (virDomainObjParseXML, virDomainCpuSetFormat)
      (virDomainCpuSetParse, virDomainDiskDefFormat)
      (virDomainActualNetDefFormat, virDomainNetDefFormat)
      (virDomainTimerDefFormat, virDomainGraphicsListenDefFormat)
      (virDomainDefFormatInternal, virDomainNetGetActualHostdev)
      (virDomainNetGetActualBandwidth, virDomainGraphicsGetListen):
      Reduce extra ().
      6877a34d
    • E
      conf: tighten up XML integer parsing · c09acad3
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=617711 reported that
      even with my recent patched to allow <memory unit='G'>1</memory>,
      people can still get away with trying <memory>1G</memory> and
      silently get <memory unit='KiB'>1</memory> instead.  While
      virt-xml-validate catches the error, our C parser did not.
      
      Not to mention that it's always fun to fix bugs while reducing
      lines of code.  :)
      
      * src/conf/domain_conf.c (virDomainParseMemory): Check for parse error.
      (virDomainDefParseXML): Avoid strtoll.
      * src/conf/storage_conf.c (virStorageDefParsePerms): Likewise.
      * src/util/xml.c (virXPathLongBase, virXPathULongBase)
      (virXPathULongLong, virXPathLongLong): Likewise.
      c09acad3
  15. 19 4月, 2012 1 次提交
    • S
      nwfilter: Fix support for trusted DHCP servers · 7c26343b
      Stefan Berger 提交于
      Fix the support for trusted DHCP server in the ebtables code's
      hard-coded function applying DHCP only filtering rules:
      Rather than using a char * use the more flexible
      virNWFilterVarValuePtr that contains the trusted DHCP server(s)
      IP address. Process all entries.
      
      Since all callers so far provided NULL as parameter, no changes
      are necessary in any other code.
      7c26343b
  16. 18 4月, 2012 1 次提交
    • S
      Fix a memory leak · 25fce290
      Stefan Berger 提交于
      The below patch fixes the following memory leak.
      
      ==20624== 24 bytes in 2 blocks are definitely lost in loss record 532 of 1,867
      ==20624==    at 0x4A05E46: malloc (vg_replace_malloc.c:195)
      ==20624==    by 0x38EC27FC01: strdup (strdup.c:43)
      ==20624==    by 0x4EB6BA3: virDomainChrSourceDefCopy (domain_conf.c:1122)
      ==20624==    by 0x495D76: qemuProcessFindCharDevicePTYs (qemu_process.c:1497)
      ==20624==    by 0x498321: qemuProcessWaitForMonitor (qemu_process.c:1258)
      ==20624==    by 0x49B5F9: qemuProcessStart (qemu_process.c:3652)
      ==20624==    by 0x468B5C: qemuDomainObjStart (qemu_driver.c:4753)
      ==20624==    by 0x469171: qemuDomainStartWithFlags (qemu_driver.c:4810)
      ==20624==    by 0x4F21735: virDomainCreate (libvirt.c:8153)
      ==20624==    by 0x4302BF: remoteDispatchDomainCreateHelper (remote_dispatch.h:852)
      ==20624==    by 0x4F72C14: virNetServerProgramDispatch (virnetserverprogram.c:416)
      ==20624==    by 0x4F6D690: virNetServerHandleJob (virnetserver.c:164)
      ==20624==    by 0x4E8F43D: virThreadPoolWorker (threadpool.c:144)
      ==20624==    by 0x4E8EAB5: virThreadHelper (threads-pthread.c:161)
      ==20624==    by 0x38EC606CCA: start_thread (pthread_create.c:301)
      ==20624==    by 0x38EC2E0C2C: clone (clone.S:115) 
      25fce290
  17. 17 4月, 2012 1 次提交
  18. 16 4月, 2012 1 次提交
    • O
      numad: Ignore cpuset if placement is auto · 8fb2164c
      Osier Yang 提交于
      As explained in previous patch, numad will balance the affinity
      dynamically, so reflecting the cpuset from numad at the first
      time doesn't make much case, and may just could cause confusion.
      8fb2164c
  19. 13 4月, 2012 1 次提交
  20. 05 4月, 2012 1 次提交
    • A
      conf: Plug memory leaks on virDomainDiskDefParseXML · 80d476a9
      Alex Jia 提交于
      Detected by valgrind. Leaks are introduced in commit b22eaa75.
      
      * src/conf/domain_conf.c (virDomainDiskDefParseXML): fix memory leaks.
      
      How to reproduce?
      
      % make && make -C tests check TESTS=qemuxml2argvtest
      % cd tests && valgrind -v --leak-check=full ./qemuxml2argvtest
      
      actual result:
      
      ==2143== 12 bytes in 2 blocks are definitely lost in loss record 74 of 179
      ==2143==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
      ==2143==    by 0x39D90A67DD: xmlStrndup (xmlstring.c:45)
      ==2143==    by 0x4F5EC0: virDomainDiskDefParseXML (domain_conf.c:3438)
      ==2143==    by 0x502F00: virDomainDefParseXML (domain_conf.c:8304)
      ==2143==    by 0x505FE3: virDomainDefParseNode (domain_conf.c:9080)
      ==2143==    by 0x5069AE: virDomainDefParse (domain_conf.c:9030)
      ==2143==    by 0x41CBF4: testCompareXMLToArgvHelper (qemuxml2argvtest.c:105)
      ==2143==    by 0x41E5DD: virtTestRun (testutils.c:145)
      ==2143==    by 0x416FA3: mymain (qemuxml2argvtest.c:399)
      ==2143==    by 0x41DCB7: virtTestMain (testutils.c:700)
      ==2143==    by 0x39CF01ECDC: (below main) (libc-start.c:226)
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      80d476a9
  21. 02 4月, 2012 1 次提交
    • P
      Support clock=variable relative to localtime · b8bf79aa
      Philipp Hahn 提交于
      Since Xen 3.1 the clock=variable semantic is supported. In addition to
      qemu/kvm Xen also knows about a variant where the offset is relative to
      'localtime' instead of 'utc'.
      
      Extends the libvirt structure with a flag 'basis' to specify, if the
      offset is relative to 'localtime' or 'utc'.
      
      Extends the libvirt structure with a flag 'reset' to force the reset
      behaviour of 'localtime' and 'utc'; this is needed for backward
      compatibility with previous versions of libvirt, since they report
      incorrect XML.
      
      Adapt the only user 'qemu' to the new name.
      Extend the RelaxNG schema accordingly.
      Document the new 'basis' attribute in the HTML documentation.
      Adapt test for the new attribute.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      b8bf79aa
  22. 31 3月, 2012 3 次提交
    • E
      conf: allow fuzz in XML with cur balloon > max · d400b8fb
      Eric Blake 提交于
      Commit 1b1402b9 introduced a regression.  Since older libvirt versions
      would silently round memory up (until the previous patch), but populated
      current memory based on querying the guest, it was possible to have
      dumpxml show cur > max by the amount of the rounding.  For example, if
      a user requested 1048570 KiB memory (just shy of 1GiB), the qemu
      driver would actually run with 1048576 KiB, and libvirt 0.9.10 would
      output a current that was 6KiB larger than the maximum.  Situations
      where this could have an impact include, but are not limited to,
      migration from old to new libvirt, managedsave in old libvirt and
      start in new libvirt, snapshot creation in old libvirt and revert in
      new libvirt - without this patch, the new libvirt would reject the
      VM because of the rounding discrepancy.
      
      Fix things by adding a fuzz factor, and silently clamp current down to
      maximum in that case, rather than failing to reparse XML for an existing
      VM.  From a practical standpoint, this has no user impact: 'virsh
      dumpxml' will continue to query the running guest rather than rely on
      the incoming xml, which will see the currect current value, and even if
      clamping down occurs during parsing, it will be by at most the fuzz
      factor of a megabyte alignment, and rounded back up when passed back to
      the hypervisor.
      
      Meanwhile, we continue to reject cur > max if the difference is beyond
      the fuzz factor of nearest megabyte.  But this is not a real change in
      behavior, since with 0.9.10, even though the parser allowed it, later
      in the processing stream we would reject it at the qemu layer; so
      rejecting it in the parser just moves error detection to a nicer place.
      
      * src/conf/domain_conf.c (virDomainDefParseXML): Don't reject
      existing XML.
      Based on a report by Zhou Peng.
      d400b8fb
    • E
      build: fix build on cygwin · 87681495
      Eric Blake 提交于
      Regression introduced when we changed types in commit 3e2c3d8f.
      
      We've done this sort of cleanup before (see commit c685993d).
      
      * src/conf/storage_conf.c (virStoragePoolDefFormat)
      (virStorageVolTargetDefFormat): Cast gid_t and uid_t.
      87681495
    • L
      Revert "Set default name for SPICE agent channel" · 1133ee2b
      Laine Stump 提交于
      This patch reverts commit b0e2bb33. Its functionality has been replaced
      by commit 3269ee65.
      1133ee2b
  23. 30 3月, 2012 1 次提交
  24. 29 3月, 2012 1 次提交
    • C
      Set default name for SPICE agent channel · b0e2bb33
      Christophe Fergeau 提交于
      libvirt documentation for channels with type 'spicevmc' says that the
      'target' child node has:
      "an optional attribute name controls how the guest will have access
       to the channel, and defaults to name='com.redhat.spice.0'."
      
      However, this default value is never set in libvirt code base,
      there's only a check in qemu_command.c to error out if the name
      attribute doesn't have the expected value (if it's set).
      
      This commit sets a default target name for spicevmc channels during
      the domain configuration parsing so that the code agrees with the
      documentation.
      b0e2bb33
  25. 27 3月, 2012 2 次提交
    • D
      Add support for setting init argv for LXC · c91cff25
      Daniel P. Berrange 提交于
      Pass argv to the init binary of LXC, using a new <initarg> element.
      
      * docs/formatdomain.html.in: Document <os> usage for containers
      * docs/schemas/domaincommon.rng: Add <initarg> element
      * src/conf/domain_conf.c, src/conf/domain_conf.h: parsing and
        formatting of <initarg>
      * src/lxc/lxc_container.c: Setup LXC argv
      * tests/Makefile.am, tests/lxcxml2xmldata/lxc-systemd.xml,
        tests/lxcxml2xmltest.c, tests/testutilslxc.c,
        tests/testutilslxc.h: Test parsing/formatting of LXC related
        XML parts
      c91cff25
    • M
      Cleanup for a return statement in source files · 9943276f
      Martin Kletzander 提交于
      Return statements with parameter enclosed in parentheses were modified
      and parentheses were removed. The whole change was scripted, here is how:
      
      List of files was obtained using this command:
      git grep -l -e '\<return\s*([^()]*\(([^()]*)[^()]*\)*)\s*;' |             \
      grep -e '\.[ch]$' -e '\.py$'
      
      Found files were modified with this command:
      sed -i -e                                                                 \
      's_^\(.*\<return\)\s*(\(\([^()]*([^()]*)[^()]*\)*\))\s*\(;.*$\)_\1 \2\4_' \
      -e 's_^\(.*\<return\)\s*(\([^()]*\))\s*\(;.*$\)_\1 \2\3_'
      
      Then checked for nonsense.
      
      The whole command looks like this:
      git grep -l -e '\<return\s*([^()]*\(([^()]*)[^()]*\)*)\s*;' |             \
      grep -e '\.[ch]$' -e '\.py$' | xargs sed -i -e                            \
      's_^\(.*\<return\)\s*(\(\([^()]*([^()]*)[^()]*\)*\))\s*\(;.*$\)_\1 \2\4_' \
      -e 's_^\(.*\<return\)\s*(\([^()]*\))\s*\(;.*$\)_\1 \2\3_'
      9943276f
  26. 23 3月, 2012 3 次提交
    • O
      New domain state pmsuspended · 54d9026a
      Osier Yang 提交于
      This introduces a new domain state pmsuspended to represent
      the domain which has been suspended by guest power management,
      e.g. (entered itno s3 state). Because a "running" state could
      be confused in this case, one will see the guest is paused
      actually while playing. And state "paused" is for the domain
      which was paused by virDomainSuspend.
      54d9026a
    • O
      Add support for the suspend event · 487c0633
      Osier Yang 提交于
      This patch introduces a new event type for the QMP event
      SUSPEND:
      
          VIR_DOMAIN_EVENT_ID_PMSUSPEND
      
      The event doesn't take any data, but considering there might
      be reason for wakeup in future, the callback definition is:
      
      typedef void
      (*virConnectDomainEventSuspendCallback)(virConnectPtr conn,
                                              virDomainPtr dom,
                                              int reason,
                                              void *opaque);
      
      "reason" is unused currently, always passes "0".
      487c0633
    • O
      Add support for the wakeup event · 57ddcc23
      Osier Yang 提交于
      This patch introduces a new event type for the QMP event
      WAKEUP:
      
          VIR_DOMAIN_EVENT_ID_PMWAKEUP
      
      The event doesn't take any data, but considering there might
      be reason for wakeup in future, the callback definition is:
      
      typedef void
      (*virConnectDomainEventWakeupCallback)(virConnectPtr conn,
                                             virDomainPtr dom,
                                             int reason,
                                             void *opaque);
      
      "reason" is unused currently, always passes "0".
      57ddcc23