1. 15 11月, 2019 5 次提交
  2. 13 11月, 2019 1 次提交
  3. 12 11月, 2019 5 次提交
  4. 09 11月, 2019 2 次提交
  5. 25 10月, 2019 1 次提交
  6. 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
  7. 21 10月, 2019 4 次提交
  8. 18 10月, 2019 1 次提交
  9. 17 10月, 2019 2 次提交
  10. 16 10月, 2019 4 次提交
  11. 15 10月, 2019 2 次提交
  12. 14 10月, 2019 3 次提交
    • D
      build: remove use of usleep gnulib module in favour of g_usleep · 27cb4c1a
      Daniel P. Berrangé 提交于
      The usleep function was missing on older mingw versions, but we can rely
      on it existing everywhere these days. It may only support times upto 1
      second in duration though, so we'll prefer to use g_usleep instead.
      
      The commandhelper program is not changed since that can't link to glib.
      Fortunately it doesn't need to build on Windows platforms either.
      Reviewed-by: NJán Tomko <jtomko@redhat.com>
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      27cb4c1a
    • D
      util: use glib base64 encoding/decoding APIs · 6c748c8e
      Daniel P. Berrangé 提交于
      Replace use of the gnulib base64 module with glib's own base64 API family.
      Reviewed-by: NJán Tomko <jtomko@redhat.com>
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      6c748c8e
    • D
      build: link to glib library · cfbe9f12
      Daniel P. Berrangé 提交于
      Add the main glib.h to internal.h so that all common code can use it.
      
      Historically glib allowed applications to register an alternative
      memory allocator, so mixing g_malloc/g_free with malloc/free was not
      safe.
      
      This was feature was dropped in 2.46.0 with:
      
            commit 3be6ed60aa58095691bd697344765e715a327fc1
            Author: Alexander Larsson <alexl@redhat.com>
            Date:   Sat Jun 27 18:38:42 2015 +0200
      
              Deprecate and drop support for memory vtables
      
      Applications are still encourged to match g_malloc/g_free, but it is no
      longer a mandatory requirement for correctness, just stylistic. This is
      explicitly clarified in
      
          commit 1f24b36607bf708f037396014b2cdbc08d67b275
          Author: Daniel P. Berrangé <berrange@redhat.com>
          Date:   Thu Sep 5 14:37:54 2019 +0100
      
              gmem: clarify that g_malloc always uses the system allocator
      
      Applications can still use custom allocators in general, but they must
      do this by linking to a library that replaces the core malloc/free
      implemenentation entirely, instead of via a glib specific call.
      
      This means that libvirt does not need to be concerned about use of
      g_malloc/g_free causing an ABI change in the public libary, and can
      avoid memory copying when talking to external libraries.
      
      This patch probes for glib, which provides the foundation layer with
      a collection of data structures, helper APIs, and platform portability
      logic.
      
      Later patches will introduce linkage to gobject which provides the
      object type system, built on glib, and gio which providing objects
      for various interesting tasks, most notably including DBus client
      and server support and portable sockets APIs, but much more too.
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      cfbe9f12
  13. 08 10月, 2019 1 次提交
  14. 27 9月, 2019 1 次提交
  15. 24 9月, 2019 1 次提交
  16. 27 8月, 2019 1 次提交
  17. 26 8月, 2019 1 次提交
  18. 23 8月, 2019 3 次提交
    • M
      storage_driver: Don't crash in storagePoolCreateXML · 9935b435
      Michal Privoznik 提交于
      In my recent patches I've introduced
      virStoragePoolObjIsStarting() which is then used to protect
      storage pool definition when the pool object is locked and
      unlocked during long running jobs. Well, my patches did not
      anticipate that @obj can be NULL under 'cleanup' label in
      storagePoolCreateXML() (for instance when parsing XML fails).
      This imperfection is causing libvirtd to crash then.
      
      Fixes: 13284a6b storage_driver: Protect pool def during startup and build
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NMartin Kletzander <mkletzan@redhat.com>
      9935b435
    • M
      storage: Drop and reacquire pool obj lock in some backends · 985f035f
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1711789
      
      Starting up or building some types of pools may take a very long
      time (e.g. a misconfigured NFS). Holding the pool object locked
      throughout the whole time hurts concurrency, e.g. if there's
      another thread that is listing all the pools.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NJán Tomko <jtomko@redhat.com>
      985f035f
    • M
      storage_driver: Protect pool def during startup and build · 13284a6b
      Michal Privoznik 提交于
      In near future the storage pool object lock will be released
      during startPool and buildPool callback (in some backends). But
      this means that another thread may acquire the pool object lock
      and change its definition rendering the former thread access not
      only stale definition but also access freed memory
      (virStoragePoolObjAssignDef() will free old def when setting a
      new one).
      
      One way out of this would be to have the pool appear as active
      because our code deals with obj->def and obj->newdef just fine.
      But we can't declare a pool as active if it's not started or
      still building up. Therefore, have a boolean flag that is very
      similar and forces virStoragePoolObjAssignDef() to store new
      definition in obj->newdef even for an inactive pool. In turn, we
      have to move the definition to correct place when unsetting the
      flag. But that's as easy as calling
      virStoragePoolUpdateInactive().
      
      Technically speaking, change made to
      storageDriverAutostartCallback() is not needed because until
      storage driver is initialized no storage API can run therefore
      there can't be anyone wanting to change the pool's definition.
      But I'm doing the change there for consistency anyways.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NJán Tomko <jtomko@redhat.com>
      13284a6b
  19. 22 8月, 2019 1 次提交