[libvirt] [PATCH 5/5] util: Replace virStorageSourceFree with virObjectUnref

John Ferlan jferlan at redhat.com
Mon Feb 18 12:15:38 UTC 2019



On 2/15/19 7:42 AM, Peter Krempa wrote:
> Now that virStorageSource is a subclass of virObject we can use
> virObjectUnref and remove virStorageSourceFree which was a thin wrapper.
> 
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
>  src/conf/domain_conf.c     |  8 ++++----
>  src/conf/snapshot_conf.c   |  2 +-
>  src/libvirt_private.syms   |  1 -
>  src/qemu/qemu_blockjob.c   | 10 +++++-----
>  src/qemu/qemu_domain.c     |  2 +-
>  src/qemu/qemu_driver.c     |  6 +++---
>  src/qemu/qemu_hotplug.c    |  2 +-
>  src/qemu/qemu_migration.c  |  2 +-
>  src/storage/storage_util.c |  2 +-
>  src/util/virstoragefile.c  | 35 ++++++++++++++---------------------
>  src/util/virstoragefile.h  |  1 -
>  tests/virstoragetest.c     |  4 ++--
>  12 files changed, 33 insertions(+), 42 deletions(-)
> 

[...]

> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> index 56c6510c5e..9dd27b5ca6 100644
> --- a/src/util/virstoragefile.c
> +++ b/src/util/virstoragefile.c
> @@ -1133,7 +1133,7 @@ virStorageFileMetadataNew(const char *path,
>      return def;
> 
>   error:
> -    virStorageSourceFree(def);
> +    virObjectUnref(def);

Is this right?  @def is VIR_ALLOC'd and not virStorageSourceNew alloc'd.
Also anything that calls this would have the same problem I would think.

FWIW: This module is the one I ran afoul of the MinGW builds when trying
to use VIR_AUTOPTR. I see no change in here to use VIR_AUTOUNREF, so I
assume this was the way around it, albeit without the object alloc.

John

>      return NULL;
>  }
> 
> @@ -1158,7 +1158,7 @@ virStorageFileMetadataNew(const char *path,
>   * image didn't specify an explicit format for its backing store. Callers are
>   * advised against probing for the backing store format in this case.
>   *
> - * Caller MUST free the result after use via virStorageSourceFree.
> + * Caller MUST free the result after use via virObjectUnref.
>   */
>  virStorageSourcePtr
>  virStorageFileGetMetadataFromBuf(const char *path,
> @@ -1178,7 +1178,7 @@ virStorageFileGetMetadataFromBuf(const char *path,
> 
>      if (virStorageFileGetMetadataInternal(ret, buf, len,
>                                            backingFormat) < 0) {
> -        virStorageSourceFree(ret);
> +        virObjectUnref(ret);
>          return NULL;
>      }
> 
> @@ -1197,7 +1197,7 @@ virStorageFileGetMetadataFromBuf(const char *path,
>   * format, since a malicious guest can turn a raw file into any
>   * other non-raw format at will.
>   *
> - * Caller MUST free the result after use via virStorageSourceFree.
> + * Caller MUST free the result after use via virObjectUnref.
>   */
>  virStorageSourcePtr
>  virStorageFileGetMetadataFromFD(const char *path,
> @@ -1257,7 +1257,7 @@ virStorageFileGetMetadataFromFD(const char *path,
>      VIR_STEAL_PTR(ret, meta);
> 
>   cleanup:
> -    virStorageSourceFree(meta);
> +    virObjectUnref(meta);
>      return ret;
>  }
> 
> @@ -2336,7 +2336,7 @@ virStorageSourceCopy(const virStorageSource *src,
>      return def;
> 
>   error:
> -    virStorageSourceFree(def);
> +    virObjectUnref(def);
>      return NULL;
>  }
> 
> @@ -2522,7 +2522,7 @@ virStorageSourceBackingStoreClear(virStorageSourcePtr def)
>      VIR_FREE(def->backingStoreRaw);
> 
>      /* recursively free backing chain */
> -    virStorageSourceFree(def->backingStore);
> +    virObjectUnref(def->backingStore);
>      def->backingStore = NULL;
>  }
> 
> @@ -2598,13 +2598,6 @@ virStorageSourceNew(void)
>  }
> 
> 
> -void
> -virStorageSourceFree(virStorageSourcePtr def)
> -{
> -    virObjectUnref(def);
> -}
> -
> -
>  static virStorageSourcePtr
>  virStorageSourceNewFromBackingRelative(virStorageSourcePtr parent,
>                                         const char *rel)
> @@ -2656,7 +2649,7 @@ virStorageSourceNewFromBackingRelative(virStorageSourcePtr parent,
>      return def;
> 
>   error:
> -    virStorageSourceFree(def);
> +    virObjectUnref(def);
>      def = NULL;
>      goto cleanup;
>  }
> @@ -3697,7 +3690,7 @@ virStorageSourceNewFromBackingAbsolute(const char *path)
>      return def;
> 
>   error:
> -    virStorageSourceFree(def);
> +    virObjectUnref(def);
>      return NULL;
>  }
> 
> @@ -3738,7 +3731,7 @@ virStorageSourceNewFromBacking(virStorageSourcePtr parent)
>      return def;
> 
>   error:
> -    virStorageSourceFree(def);
> +    virObjectUnref(def);
>      return NULL;
>  }
> 
> @@ -3919,7 +3912,7 @@ virStorageSourceUpdateCapacity(virStorageSourcePtr src,
>      ret = 0;
> 
>   cleanup:
> -    virStorageSourceFree(meta);
> +    virObjectUnref(meta);
>      return ret;
>  }
> 
> @@ -4943,7 +4936,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
>      if (virStorageSourceHasBacking(src))
>          src->backingStore->id = depth;
>      virStorageFileDeinit(src);
> -    virStorageSourceFree(backingStore);
> +    virObjectUnref(backingStore);
>      return ret;
>  }
> 
> @@ -4966,7 +4959,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
>   * If @report_broken is true, the whole function fails with a possibly sane
>   * error instead of just returning a broken chain.
>   *
> - * Caller MUST free result after use via virStorageSourceFree.
> + * Caller MUST free result after use via virObjectUnref.
>   */
>  int
>  virStorageFileGetMetadata(virStorageSourcePtr src,
> @@ -5050,7 +5043,7 @@ virStorageFileGetBackingStoreStr(virStorageSourcePtr src,
>      ret = 0;
> 
>   cleanup:
> -    virStorageSourceFree(tmp);
> +    virObjectUnref(tmp);
> 
>      return ret;

[...]




More information about the libvir-list mailing list