1. 21 3月, 2014 2 次提交
    • E
      qemu: create object for qemu monitor events · 8059afca
      Eric Blake 提交于
      Create qemu monitor events as a distinct class to normal domain
      events, because they will be filtered differently.  For ease of
      review, the logic for filtering by event name is saved for a later
      patch.
      
      * src/conf/domain_event.c (virDomainQemuMonitorEventClass): New
      class.
      (virDomainEventsOnceInit): Register it.
      (virDomainQemuMonitorEventDispose, virDomainQemuMonitorEventNew)
      (virDomainQemuMonitorEventDispatchFunc)
      (virDomainQemuMonitorEventStateRegisterID): New functions.
      * src/conf/domain_event.h (virDomainQemuMonitorEventNew)
      (virDomainQemuMonitorEventStateRegisterID): New prototypes.
      * src/libvirt_private.syms (conf/domain_conf.h): Export them.
      8059afca
    • M
      9c487f65
  2. 19 3月, 2014 1 次提交
  3. 18 3月, 2014 6 次提交
    • D
      Add virLogSource variables to all source files · 2835c1e7
      Daniel P. Berrange 提交于
      Any source file which calls the logging APIs now needs
      to have a VIR_LOG_INIT("source.name") declaration at
      the start of the file. This provides a static variable
      of the virLogSource type.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      2835c1e7
    • M
      Explicitly cast some switch parameters to enum · 2bc46827
      Martin Kletzander 提交于
      This patch is not trying to fix every switch, just the ones I worked
      with last time, because some of these were especially unreadable.
      Covers enums virDomainGraphicsType and virDomainChrType (where
      applicable).
      
      Also sort its cases by their value.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      2bc46827
    • M
      123a881d
    • N
      Fix memory leak in virDomainChrSourceDefClear() · 24b3fcf9
      Nehal J Wani 提交于
      While running qemuxml2xmltest, it was found that valgrind pointed out
      the following memory leak:
      
      ==21905== 26 bytes in 1 blocks are definitely lost in loss record 23 of 69
      ==21905==    at 0x4A069EE: malloc (vg_replace_malloc.c:270)
      ==21905==    by 0x3E782A754D: xmlStrndup (in /usr/lib64/libxml2.so.2.7.6)
      ==21905==    by 0x4CD986D: virDomainChrSourceDefParseXML (domain_conf.c:7233)
      ==21905==    by 0x4CE4199: virDomainChrDefParseXML (domain_conf.c:7512)
      ==21905==    by 0x4CFAF3F: virDomainDefParseXML (domain_conf.c:12303)
      ==21905==    by 0x4CFB46E: virDomainDefParseNode (domain_conf.c:13031)
      ==21905==    by 0x4CFB5E9: virDomainDefParse (domain_conf.c:12973)
      ==21905==    by 0x41E9D8: testCompareXMLToXMLFiles (qemuxml2xmltest.c:40)
      ==21905==    by 0x41EBAA: testCompareXMLToXMLHelper (qemuxml2xmltest.c:93)
      ==21905==    by 0x421D21: virtTestRun (testutils.c:199)
      ==21905==    by 0x41FCE9: mymain.part.0 (qemuxml2xmltest.c:244)
      ==21905==    by 0x42249D: virtTestMain (testutils.c:782)
      ==21905==
      ... and 7 more
      24b3fcf9
    • N
      Fix memory leak in virDomainSnapshotDiskDefClear() · 7d949aa9
      Nehal J Wani 提交于
      While running domainsnapshotxml2xmltest, it was found that valgrind pointed out
      the following memory leak:
      
      ==32176== 42 (32 direct, 10 indirect) bytes in 1 blocks are definitely lost in loss record 42 of 66
      ==32176==    at 0x4A069EE: malloc (vg_replace_malloc.c:270)
      ==32176==    by 0x4A06B62: realloc (vg_replace_malloc.c:662)
      ==32176==    by 0x4C65A07: virReallocN (viralloc.c:243)
      ==32176==    by 0x4C65B2E: virExpandN (viralloc.c:292)
      ==32176==    by 0x4C65E30: virInsertElementsN (viralloc.c:434)
      ==32176==    by 0x4CD71F3: virDomainDiskSourceDefParse (domain_conf.c:5078)
      ==32176==    by 0x4CF6EF4: virDomainSnapshotDefParseNode (snapshot_conf.c:151)
      ==32176==    by 0x4CF7314: virDomainSnapshotDefParseString (snapshot_conf.c:410)
      ==32176==    by 0x41FB8D: testCompareXMLToXMLHelper (domainsnapshotxml2xmltest.c:100)
      ==32176==    by 0x420FD1: virtTestRun (testutils.c:199)
      ==32176==    by 0x41F859: mymain (domainsnapshotxml2xmltest.c:222)
      ==32176==    by 0x42174D: virtTestMain (testutils.c:782)
      ==32176==
      ... and one more.
      7d949aa9
    • D
      Give virNWFilterVarCombIterNext saner semantics · ef2c4c96
      Daniel P. Berrange 提交于
      The virNWFilterVarCombIterNext method will free its
      parameter when it gets to the end of the iterator.
      This is somewhat misleading design, making it appear
      as if the caller has a memory leak. Remove the free'ing
      of the parameter and ensure that the calling method
      ebiptablesCreateRuleInstanceIterate free's it instead.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ef2c4c96
  4. 14 3月, 2014 10 次提交
    • L
      conf: eliminate hardcoded indentation in all remaining xml · 68d63c6b
      Laine Stump 提交于
      These last files had such a small change count I just put them into a
      single patch.
      68d63c6b
    • L
      conf: eliminate hardcoded indent in volume/pool xml · 5f845437
      Laine Stump 提交于
      Again completely mechanical, but a lot of lines.
      5f845437
    • L
      conf: eliminate hardcoded indentation in node device xml · f728155f
      Laine Stump 提交于
      Completely mechanical changes, but there were a lot of lines so I made
      it a separate patch.
      f728155f
    • L
      conf: eliminate hardcoded indentation in capabilities xml · 75f0b66c
      Laine Stump 提交于
      There were a lot of changes here, but all very mechanical. For some
      reason, the virBufferPtr had been named "xml" instead of "buf" in this
      file, so since the indentation changing touched almost every line
      using the buffer, I took this chance to change its name for "buf" for
      consistency with every other file.
      75f0b66c
    • L
      conf: eliminate hardcoded indentation in nwfilter xml · d3679928
      Laine Stump 提交于
      This file was using multiple virBuffers, inserting the contents of
      buf3 into buf2, then inserting the contents of buf2 into buf1, rather
      than the more conventional method of just passing around a single
      virBufferPtr and streaming everything into that single buffer. This
      was unnecessary, and also made it more difficult to make indentation
      relative, because when you insert a string into a buffer, the
      indentation of the buffer is only applied once at the beginning of the
      string, *not* each time a newline is encountered in the string.
      d3679928
    • L
      conf: eliminate outmoded/odd indent method from interface xml · 257e62df
      Laine Stump 提交于
      These format functions needed the ability to be indented by an
      arbitrary amount, but were written before the introduction of
      virBufferAdjustIndent(). They instead used the much more clunky method
      of adding a "level" arg to every format function, and padding with
      spaces using the "%*s" printf format specifier (giving it the level,
      and "", which has the effect of adding level spaces to the output).
      
      While eliminating the hardcoded indentation in other xml, I decided it
      was finally time to also modernize the interface formatter code to
      make it more consistent.
      257e62df
    • L
      conf: eliminate hardcoded indent from network xml · b1258b27
      Laine Stump 提交于
      This was very simple, since the only place that had hardcoded
      indentation was a few items in the network status xml.
      b1258b27
    • L
      conf: eliminate hardcoded indent from domain snapshot xml · b9e9b76e
      Laine Stump 提交于
      All leading spaces in domain snapshot xml format functions have been
      replaced with appropriate calls to virBufferAdjustIndent(). This will
      make it easier to call other similarly fixed format functions
      (e.g. domain device format functions).
      b9e9b76e
    • L
      conf: eliminate hardcoded indent from domain xml · ca6dc7b5
      Laine Stump 提交于
      Many of the domain xml format functions (including all of the device
      format functions) had hard-coded spaces, which made for incorrect
      indentation when those functions were called in a different context
      (for example, commit 2122cf39 added <interface> XML into the document
      provided to a network hook script, and in this case it should have
      been indented by 2 spaces, but was instead indented by 6 spaces).
      
      To make it possible to insert a properly indented device anywhere into
      an XML document, this patch removes hardcoded spaces from the
      formatting functions, and calls virBufferAdjustIndent() at appropriate
      places instead. (a regex search of domain_conf.c was done to assure
      that all occurrences of hardcoded spaces were removed).
      
      virDomainDiskSourceDefFormatInternal() is also called from
      snapshot_conf.c, so two virBufferAdjustIndent() calls were temporarily
      added around that call - those functions will have hardcoded spaces
      removed in a separate patch.
      
      This could cause some conflicts when backporting future changes to the
      formatting functions to older branches, but fortunately the changes
      are almost all trivial, so conflict resolution will be obvious.
      ca6dc7b5
    • S
      nwfilter: Add ARP src/dst IP mask for ebtables ARP · a81756f1
      Stefan Berger 提交于
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=862887
      
      Add a netmask for the source and destination IP address for the
      ebtables --arp-ip-src and --arp-ip-dst options. Extend the XML
      parser with support for XML attributes for these netmasks similar
      to already supported netmasks. Extend the documentation.
      Signed-off-by: NStefan Berger <stefanb@linux.vnet.ibm.com>
      a81756f1
  5. 13 3月, 2014 2 次提交
  6. 12 3月, 2014 2 次提交
  7. 10 3月, 2014 2 次提交
    • J
      Change file names in comments to match the files they are in · 9b9d7704
      Ján Tomko 提交于
      Some of these are leftovers from renaming the files, others
      are just typos.
      
      Also introduce an ugly awk script to enforce this.
      9b9d7704
    • M
      conf: Utilize more of VIR_(APPEND|INSERT|DELETE)_ELEMENT · 2133441a
      Michal Privoznik 提交于
      This fixes a possible double free. In virNetworkAssignDef() if
      virBitmapNew() fails, then virNetworkObjFree(network) is called.
      However, with network->def pointing to actual @def. So if caller
      frees @def again, ...
      
      Moreover, this fixes one possible memory leak too. In
      virInterfaceAssignDef() if appending to the list of interfaces
      fails, we ought to call virInterfaceObjFree() instead of bare
      VIR_FREE().
      
      Although, in order to do that some array size variables needs
      to be turned into size_t rather than int.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      2133441a
  8. 25 2月, 2014 6 次提交
    • L
      conf: output actual netdev status in <interface> XML · 7d5bf484
      Laine Stump 提交于
      Until now, the "live" XML status of an <interface type='network'>
      device would always show the network information, rather than the
      exact hardware device that was used. It would also show the name of
      any portgroup the interface belonged to, rather than providing the
      configuration that was derived from that portgroup. As an example,
      given the following network definition:
      
      [A]
        <network>
          <name>testnet</name>
          <forward type='bridge' dev='p4p1_0'>
            <interface dev='p4p1_0'/>
            <interface dev='p4p1_1'/>
            <interface dev='p4p1_2'/>
            <interface dev='p4p1_3'/>
          </forward>
          <portgroup name='admin'>
            <bandwidth>
                <inbound average='1000' peak='5000' burst='1024'/>
                <outbound average='128' peak='256' burst='256'/>
            </bandwidth>
          </portgroup>
        </network>
      
      and the following domain <interface>:
      
      [B]
        <interface type='network'>
          <source network='testnet' portgroup='admin'/>
        </interface>
      
      the output of "virsh dumpxml $domain" while the domain was running
      would yield something like this:
      
      [C]
        <interface type='network'>
          <source network='testnet' portgroup='admin'/>
          <target dev='macvtap0'/>
          <alias name='net0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
      
      In order to learn the exact bandwidth information of the interface, a
      management application would need to retrieve the XML for testnet,
      then search for the portgroup named "admin". Even worse, there was no
      simple and standard way to learn which host physdev the macvtap0
      device is attached to.
      
      Internally, libvirt has always kept this information in the
      virDomainDef that is held in memory, as well as storing it in the
      (libvirt-internal-only) domain status XML (in
      /var/run/libvirt/qemu/$domain.xml). In order to not confuse the runtime
      "actual state" with the config of the device, it's internally stored
      like this:
      
      [D]
        <interface type='network'>
          <source network='testnet' portgroup='admin'/>
          <actual type='direct'>
            <source dev='p4p1_0' mode='bridge'/>
            <bandwidth>
                <inbound average='1000' peak='5000' burst='1024'/>
                <outbound average='128' peak='256' burst='256'/>
            </bandwidth>
          </actual>
          <target dev='macvtap0'/>
          <alias name='net0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
      
      This was never exposed outside of libvirt though, because I thought it
      would be too awkward for a management application to need to look in
      two places for the same information, but I also wasn't sure that it
      would be okay to overwrite the config info (in this case "<source
      network='testnet' portgroup='admin'/>") with the actual runtime info
      (everything inside <actual> above).
      
      Now we have a need for this information to be made available to
      management applications (in particular, so that a network "plugged"
      hook will have full information about the device that is being plugged
      in), so it's time to take the leap and decide that it is acceptable
      for the config info to be replaced with actual runtime state (but
      *only* when reporting domain live status, *not* when saving state in
      /var/run/libvirt/qemu/$domain.xml - that remains the same so that
      there is no loss of information). That is what this patch does - once
      applied, the output of "virsh dumpxml $domain" when the domain is
      running will contain something like this:
      
      [E]
        <interface type='direct'>
          <source dev='p4p1_0' mode='bridge'/>
          <bandwidth>
              <inbound average='1000' peak='5000' burst='1024'/>
              <outbound average='128' peak='256' burst='256'/>
          </bandwidth>
          <target dev='macvtap0'/>
          <alias name='net0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
      
      In effect, everything that is internally stored within <actual> is
      moved up a level to where a management application will expect
      it. This means that the management application will only look in a
      single place to learn - the type of interface in use, the name of the
      physdev (if relevant), the <bandwidth>, <vlan>, and <virtualport>
      settings in use.
      
      The potential downside is that a management app looking at this output
      will not see that the physdev 'p4p1_0' was actually allocated from the
      network named 'testnet', or that the bandwidth numbers were taken from
      the portgroup 'admin'. However, if they are interested in that info,
      they can always get the "inactive" XML for the domain.
      
      An example of where this could cause problems is in virt-manager's
      network device display, which shows the status of the device, but
      allows you to edit that status info and save it as the new
      config. Previously virt-manager would always display the information
      in example [C] above, and allow editing that. With this patch, it will
      instead display what is in [E] and allow editing it directly, which
      could lead to some confusion. I would suggest that virt-manager have
      an "edit" button which would change the display from the "live" xml to
      the "inactive" xml, so that editing would be done on that; such a
      change would both handle the new situation, and also be compatible
      with older releases.
      7d5bf484
    • L
      conf: new function virDomainActualNetDefContentsFormat · 9da98aa5
      Laine Stump 提交于
      This function is currently only called from one place, but in a
      subsequent patch will be called from a 2nd place.
      
      The new function exactly replicates the original behavior of the part
      of virDomainActualNetDefFormat() that it replaces, but takes a
      virDomainNetDefPtr instead of virDomainActualNetDefPtr, and uses the
      virDomainNetGetActual*() functions whenever possible, rather than
      reaching into def->data.network.actual - this is to be sure that we
      are reporting exactly what is being used internally, just in case
      there are any discrepancies (there shouldn't be).
      9da98aa5
    • L
      conf: re-situate <bandwidth> element in <interface> · 65487c0f
      Laine Stump 提交于
      This moves the call to virNetDevBandwidthFormat() in
      virDomainNetDefFormat() to be called right after the call to
      virNetDevVPortProfileFormat(), so that a single chunk of that function
      can be placed inside an if that conditionally calls
      virDomainActualNetDefContentsFormat() instead (next patch). The
      re-ordering necessitates modifying a couple of test data files.
      65487c0f
    • L
      conf: make virDomainNetDefFormat a public function · 7c39214c
      Laine Stump 提交于
      We will need to call virDomainNetDefFormat() from the network hook (in
      the network driver).
      7c39214c
    • L
      conf: handle null pointer in virNetDevVlanFormat · 79358733
      Laine Stump 提交于
      Other *Format() functions (e.g. virNetDevBandwidthFormat()) return
      with no action when called with a NULL *Def pointer. This makes
      virNetDevVlanFormat() consistent with that behavior.
      79358733
    • L
      conf: clarify what is returned for actual bandwidth and vlan · 6d4ffae4
      Laine Stump 提交于
      In practice, if a virDomainNetDef has a virDomainActualNetDef
      allocated, the ActualNetDef will *always* contain the bandwidth and
      vlan data from the NetDef (unless there was also a portgroup involved
      - see networkAllocateActualDevice()).
      
      However, virDomainNetGetActual(Bandwidth|Vlan)() were coded to make it
      appear as if it might be possible to have a valid bandwidth/vlan in
      the NetDef, but a NULL in the ActualNetDef. Believing this un-truth
      could lead to writing unnecessarily defensive code when dealing with
      the virDomainGetActual*() functions, so this patch makes it more
      obvious:
      
         If there is an ActualNetDef, it will always have a copy of the
         various appropriate bits from its parent NetDef, and the
         virDomainGetActual* function will *always* return the data from the
         ActualNetDef, not from the NetDef.
      
      The reason for this effective-NOP patch is that a subsequent patch to
      change virDomainNetDefFormat will rely on the above rule.
      6d4ffae4
  9. 20 2月, 2014 1 次提交
  10. 19 2月, 2014 4 次提交
  11. 18 2月, 2014 2 次提交
  12. 17 2月, 2014 2 次提交