1. 25 10月, 2019 4 次提交
  2. 24 10月, 2019 1 次提交
    • M
      Drop needless ret variable · 3b4df5d3
      Michal Privoznik 提交于
      In few places we have the following code pattern:
      
        int ret;
        ... /* @ret is not accessed here */
        ret = f(...);
        return ret;
      
      This pattern can be written less verbose:
      
        ...
        return f(...);
      
      This patch was generated with following coccinelle spatch:
      
        @@
        type T;
        constant C;
        expression f;
        identifier ret;
        @@
        -T ret = C;
         ... when != ret
        -ret = f;
        -return ret;
        +return f;
      
      Afterwards I needed to fix a few places, e.g. comment in
      virDomainNetIPParseXML() was removed too because coccinelle
      thinks it refers to @ret while in fact it doesn't. Also in few
      places it replaced @ret declaration with a few spaces instead of
      removing the line. But nothing terribly wrong.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
      3b4df5d3
  3. 23 10月, 2019 2 次提交
  4. 21 10月, 2019 9 次提交
  5. 18 10月, 2019 1 次提交
    • J
      conf: Add 'x' and 'y' resolution into video XML definition · 72862797
      Julio Faracco 提交于
      This commit adds resolution element with parameters 'x' and 'y' into video
      XML domain group definition. Both, properties were added into an element
      called 'resolution' and it was added inside 'model' element. They are set
      as optional. This element does not follow QEMU properties 'xres' and
      'yres' format. Both HTML documentation and schema were changed too. This
      commit includes a simple test case to cover resolution for QEMU video
      models. The new XML format for resolution looks like:
      
          <model ...>
            <resolution x='800' y='600'/>
          </model>
      Reviewed-by: NCole Robinson <crobinso@redhat.com>
      Signed-off-by: NJulio Faracco <jcfaracco@gmail.com>
      72862797
  6. 17 10月, 2019 2 次提交
    • J
      conf: Use consistent error preservation and restoration calls · 4e7b3b1e
      John Ferlan 提交于
      Provide some consistency over error message variable name and usage
      when saving error messages across possible other errors or possibility
      of resetting of the last error.
      
      Instead of virSaveLastError paired up with virSetError and virFreeError,
      we should use the newer virErrorPreserveLast and virRestoreError.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
      4e7b3b1e
    • L
      conf: remove parse code for long-extinct "<state devaddr='d:b:s'/> · 382c762c
      Laine Stump 提交于
      Back in July 2009, in the days before libvirt supported explicitly
      assigning a PCI address to every device, code was added to save the
      PCI addresses of hotplugged network, disk, and hostdevs in the domain
      status with this XML element:
      
         <state devaddr='domain:bus:slot'/>
      
      This was added in commits 4e21a95a, 01654107, in v0.7.0, and 0c5b7b93
      in v0.7.1.
      
      Then just a few months later, in November 2009, The code that actually
      formatted the "devaddr='blah'" into the status XML was removed by
      commit 1b0cce7d (which "introduced a standardized data structure for
      device addresses"). The code to *parse* the devaddr from the status
      was left in for backward compatibility though (it just parses it into
      the "standard" PCI address).
      
      At the time the devaddr attribute was added, a few other attributes
      already existed in the <state> element for network devices, and these
      were removed over time (I haven't checked the exact dates of this),
      but 10 years later, in libvirt v5.8.0, we *still* maintain code to
      parse <state devaddr='blah'/> from the domain status.
      
      In the meantime, even distros so old that we no longer support them in
      upstream libvirt are using a libvirt new enough that it doesn't ever
      write <state devaddr='blah'/> to the domain status XML.
      
      Since the only way a current libvirt would ever encounter this element
      would be if someone was upgrading directly from libvirt <= v0.7.5 with
      running guests, it seems safe to finally remove the code that parses it.
      Signed-off-by: NLaine Stump <laine@redhat.com>
      Reviewed-by: NJán Tomko <jtomko@redhat.com>
      382c762c
  7. 16 10月, 2019 6 次提交
  8. 15 10月, 2019 4 次提交
  9. 10 10月, 2019 3 次提交
  10. 07 10月, 2019 1 次提交
  11. 27 9月, 2019 3 次提交
    • L
      conf: refresh network ports missing from network driver on restart · 98fe739e
      Laine Stump 提交于
      Before the refactoring that properly separated the network driver from
      the hypervisor driver and forced all interaction to go through public
      APIs, all network usage counters were zeroed when the network driver
      was initialized, and the network driver's now-deprecated
      "semi-private" API networkNotifyActualDevice() was called for every
      interface of every domain as each hypervisor "reconnected" its domains
      during a libvirtd restart, and this would refresh the usage count for
      each network.
      
      Post-driver-split, during libvirtd restart/reconnection of the running
      domains, the function virDomainNetNotifyActualDevice() is called by
      each hypervisor driver for every interface of every domain restart,
      and this function has code to re-register interfaces, but it only
      calls into the network driver to re-register those ports that don't
      already have a valid portid (ie. one that is not simply all 0),
      assuming that those with valid portids are already known (and counted)
      by the network driver.
      
      commit 7ab9bdd4 recently modified the network driver so that, in most
      cases, it properly resyncs each network's connection count during
      libvirtd (or maybe virtnetworkd) restart by iterating through the
      network's port list. This doesn't account for the case where a network
      is destroyed and restarted while there are running domains that have
      active ports on the network. In that case, the entire port list and
      connection count for that network is lost, and now even a restart of
      libvirtd/virtnetworkd/virtqemud, which in the past would resync the
      connection count, doesn't help (the network driver thinks there are no
      active ports, while the hypervisor driver knows about all the active
      ports, but mistakenly believes that the network driver also knows).
      
      The solution to this is to not just bypass valid portids during the
      call to virDomainNetworkNotifyActualDevice(). Instead, we query the
      network driver about the portid that was preserved in the domain
      status, and if it is not registered, we register it.
      
      (NB: while it would technically be correct to just generate a new
      portid for these cases, it makes for less churn in portids (and thus
      may make troubleshooting simpler) if we make the small fix to
      virDomainNetDefActualToNetworkPort() that preserves existing valid
      portids rather than unconditionally generating a new one.)
      Signed-off-by: NLaine Stump <laine@redhat.com>
      Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
      98fe739e
    • L
      conf: take advantage of VIR_AUTOPTR for virNetworkPortDefPtr · b6a8d303
      Laine Stump 提交于
      define a VIR_DEFINE_AUTOPTR_FUNC() to autofree virNetworkPortDefs, and
      convert all uses of virNetworkPortDefPtr that are appropriate to use
      it.
      
      This coincidentally fixes multiple potential memory leaks (in failure
      cases) in networkPortCreateXML()
      Signed-off-by: NLaine Stump <laine@redhat.com>
      Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
      b6a8d303
    • L
      conf: utility function to update entry in def->nets array · 7e490cda
      Laine Stump 提交于
      A virDomainNetDef object in a domain's nets array might contain a
      virDomainHostdevDef, and when this is the case, the domain's hostdevs
      array will also have a pointer to this embedded hostdev (this is done
      so that internal functions that need to perform some operation on all
      hostdevs won't leave out the type='hostdev' network interfaces).
      
      When a network device was updated with virDomainUpdateDeviceFlags(),
      we were replacing the entry in the nets array (and free'ing the
      original) but forgetting about the pointer in the hostdevs array
      (which would then point to the now-free'd hostdev contained in the old
      net object.) This often resulted in a libvirtd crash.
      
      The solution is to add a function, virDomainNetUpdate(), called by
      qemuDomainUpdateDeviceConfig(), that updates the hostdevs array
      appropriately along with the nets array.
      
      Resolves: https://bugzilla.redhat.com/1558934Signed-off-by: NLaine Stump <laine@redhat.com>
      Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
      7e490cda
  12. 26 9月, 2019 1 次提交
    • M
      domain_conf: Unref video private data in virDomainVideoDefClear() · 4e9d72be
      Michal Privoznik 提交于
      The private data for video definition is created in
      virDomainVideoDefNew() and we attempt to free it in
      virDomainVideoDefFree(). This seems to work, except
      the free function calls clear function which zeroes
      out the whole structure and thus virObjectUnref()
      which is called on private data does nothing.
      
      2,568 bytes in 107 blocks are definitely lost in loss record 207 of 213
         at 0x4A35476: calloc (vg_replace_malloc.c:752)
         by 0x50A6048: virAllocVar (viralloc.c:346)
         by 0x513CC5A: virObjectNew (virobject.c:243)
         by 0x4DC1DEE: qemuDomainVideoPrivateNew (qemu_domain.c:1337)
         by 0x51A6BD6: virDomainVideoDefNew (domain_conf.c:2831)
         by 0x51B9F06: virDomainVideoDefParseXML (domain_conf.c:15541)
         by 0x51CB761: virDomainDefParseXML (domain_conf.c:21158)
         by 0x51C5973: virDomainDefParseNode (domain_conf.c:21708)
         by 0x51C583A: virDomainDefParse (domain_conf.c:21663)
         by 0x51C58AE: virDomainDefParseFile (domain_conf.c:21688)
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NErik Skultety <eskultet@redhat.com>
      4e9d72be
  13. 25 9月, 2019 3 次提交