1. 29 8月, 2017 4 次提交
  2. 26 8月, 2017 1 次提交
  3. 15 8月, 2017 1 次提交
  4. 10 8月, 2017 1 次提交
    • M
      qemuDomainUndefineFlags: unlink nvram file regardless of domain state · e488ebb3
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1467245
      
      Currently, there's a bug when undefining a domain with NVRAM
      store. Basically, the unlink() of the NVRAM store file happens
      during the undefine procedure iff domain is inactive. So, if
      domain is running and undefine is called the file is left behind.
      It won't be removed in the domain cleanup process either
      (qemuProcessStop). One of the solutions is to remove if
      regardless of the domain state and rely on qemu having the file
      opened. This still has a downside that if the domain is defined
      back the NVRAM store file is going to be new, any changes to the
      current one are lost (just like with any other file that is
      deleted while a process has it opened). But is it really a
      downside?
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      e488ebb3
  5. 03 8月, 2017 1 次提交
  6. 27 7月, 2017 1 次提交
  7. 26 7月, 2017 2 次提交
    • P
      qemu: switch QEMU capabilities to use virFileCache · d03de54e
      Pavel Hrdina 提交于
      The switch contains considerable amount of changes:
      
        virQEMUCapsRememberCached() is removed because this is now handled
        by virFileCacheSave().
      
        virQEMUCapsInitCached() is removed because this is now handled by
        virFileCacheLoad().
      
        virQEMUCapsNewForBinary() is split into two functions,
        virQEMUCapsNewData() which creates new data if there is nothing
        cached and virQEMUCapsLoadFile() which loads the cached data.
        This is now handled by virFileCacheNewData().
      
        virQEMUCapsCacheValidate() is removed because this is now handled by
        virFileCacheValidate().
      
        virQEMUCapsCacheFree() is removed because it's no longer required.
      
        Add virCapsPtr into virQEMUCapsCachePriv because for each call of
        virFileCacheLookup*() we need to use current virCapsPtr.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      Reviewed-by: NJiri Denemark <jdenemar@redhat.com>
      d03de54e
    • P
      qemu: pass only host arch instead of the whole virCaps · f366cfed
      Pavel Hrdina 提交于
      This is a preparation for following patches where we switch to
      virFileCache for QEMU capabilities cache
      
      The host arch will always remain the same but virCaps may change.  Now
      the host arch is stored while creating new qemu capabilities cache.
      It removes the need to pass virCaps into virQEMUCapsCache*() functions.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      Reviewed-by: NJiri Denemark <jdenemar@redhat.com>
      f366cfed
  8. 25 7月, 2017 1 次提交
  9. 20 7月, 2017 6 次提交
  10. 12 7月, 2017 1 次提交
    • J
      qemu: Fix qemuDomainGetBlockInfo allocation value setting · fde654be
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1467826
      
      Commit id 'b9b1aa63' was supposed to add logic to set the allocation
      for sparse files when wr_highest_offset was zero; however, an unconditional
      setting was done just prior. For block devices, this means allocation is
      always returning 0 since 'actual-size' will be zero.
      
      Remove the unconditional setting and add the note about it being possible
      to still be zero for block devices. As soon as the guest starts writing to
      the volume, the allocation value will then be obtainable from qemu via
      the wr_highest_offset.
      fde654be
  11. 11 7月, 2017 6 次提交
  12. 25 6月, 2017 1 次提交
    • J
      events: Avoid double free possibility on remote call failure · 2065499b
      John Ferlan 提交于
      If a remote call fails during event registration (more than likely from
      a network failure or remote libvirtd restart timed just right), then when
      calling the virObjectEventStateDeregisterID we don't want to call the
      registered @freecb function because that breaks our contract that we
      would only call it after succesfully returning.  If the @freecb routine
      were called, it could result in a double free from properly coded
      applications that free their opaque data on failure to register, as seen
      in the following details:
      
          Program terminated with signal 6, Aborted.
          #0  0x00007fc45cba15d7 in raise
          #1  0x00007fc45cba2cc8 in abort
          #2  0x00007fc45cbe12f7 in __libc_message
          #3  0x00007fc45cbe86d3 in _int_free
          #4  0x00007fc45d8d292c in PyDict_Fini
          #5  0x00007fc45d94f46a in Py_Finalize
          #6  0x00007fc45d960735 in Py_Main
          #7  0x00007fc45cb8daf5 in __libc_start_main
          #8  0x0000000000400721 in _start
      
      The double dereference of 'pyobj_cbData' is triggered in the following way:
      
          (1) libvirt_virConnectDomainEventRegisterAny is invoked.
          (2) the event is successfully added to the event callback list
              (virDomainEventStateRegisterClient in
              remoteConnectDomainEventRegisterAny returns 1 which means ok).
          (3) when function remoteConnectDomainEventRegisterAny is hit,
              network connection disconnected coincidently (or libvirtd is
              restarted) in the context of function 'call' then the connection
              is lost and the function 'call' failed, the branch
              virObjectEventStateDeregisterID is therefore taken.
          (4) 'pyobj_conn' is dereferenced the 1st time in
              libvirt_virConnectDomainEventFreeFunc.
          (5) 'pyobj_cbData' (refered to pyobj_conn) is dereferenced the
               2nd time in libvirt_virConnectDomainEventRegisterAny.
          (6) the double free error is triggered.
      
      Resolve this by adding a @doFreeCb boolean in order to avoid calling the
      freeCb in virObjectEventStateDeregisterID for any remote call failure in
      a remoteConnect*EventRegister* API. For remoteConnect*EventDeregister* calls,
      the passed value would be true indicating they should run the freecb if it
      exists; whereas, it's false for the remote call failure path.
      
      Patch based on the investigation and initial patch posted by
      fangying <fangying1@huawei.com>.
      2065499b
  13. 20 6月, 2017 3 次提交
  14. 14 6月, 2017 1 次提交
  15. 13 6月, 2017 2 次提交
  16. 12 6月, 2017 1 次提交
  17. 07 6月, 2017 7 次提交