Following up the directions provided in commit 16121a88a7, this
patch converts virStorageSource to use GObject.
All calls to virObjectRef were converted to g_object_ref. Calls to
virObjectUnref were changed to use either g_object_unref or
g_clear_object, depending on the context.
Signed-off-by: Daniel Henrique Barboza <danielhb413(a)gmail.com>
---
src/conf/domain_conf.c | 13 ++---
src/conf/snapshot_conf.c | 3 +-
src/qemu/qemu_blockjob.c | 43 ++++++--------
src/qemu/qemu_domain.c | 6 +-
src/qemu/qemu_driver.c | 14 ++---
src/qemu/qemu_hotplug.c | 3 +-
src/qemu/qemu_migration.c | 2 +-
src/storage/storage_backend_gluster.c | 2 +-
src/storage/storage_util.c | 4 +-
src/util/virstoragefile.c | 84 +++++++++++++--------------
src/util/virstoragefile.h | 9 ++-
tests/qemublocktest.c | 6 +-
tests/virstoragetest.c | 12 ++--
13 files changed, 98 insertions(+), 103 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index c1705a07b6..71888ebaf0 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2097,10 +2097,10 @@ virDomainDiskDefFree(virDomainDiskDefPtr def)
if (!def)
return;
- virObjectUnref(def->src);
+ g_clear_object(&def->src);
VIR_FREE(def->serial);
VIR_FREE(def->dst);
- virObjectUnref(def->mirror);
+ g_clear_object(&def->mirror);
VIR_FREE(def->wwn);
VIR_FREE(def->driverName);
VIR_FREE(def->vendor);
@@ -2312,7 +2312,7 @@ void virDomainFSDefFree(virDomainFSDefPtr def)
if (!def)
return;
- virObjectUnref(def->src);
+ g_object_unref(def->src);
VIR_FREE(def->dst);
virDomainDeviceInfoClear(&def->info);
VIR_FREE(def->virtio);
@@ -2896,8 +2896,7 @@
virDomainHostdevSubsysSCSIiSCSIClear(virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc
if (!iscsisrc)
return;
- virObjectUnref(iscsisrc->src);
- iscsisrc->src = NULL;
+ g_clear_object(&iscsisrc->src);
}
@@ -9276,7 +9275,7 @@ virDomainStorageSourceParseBase(const char *type,
const char *format,
const char *index)
{
- VIR_AUTOUNREF(virStorageSourcePtr) src = NULL;
+ g_autoptr(virStorageSource) src = NULL;
virStorageSourcePtr ret = NULL;
if (!(src = virStorageSourceNew()))
@@ -9402,7 +9401,7 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
{
VIR_XPATH_NODE_AUTORESTORE(ctxt);
xmlNodePtr source;
- VIR_AUTOUNREF(virStorageSourcePtr) backingStore = NULL;
+ g_autoptr(virStorageSource) backingStore = NULL;
VIR_AUTOFREE(char *) type = NULL;
VIR_AUTOFREE(char *) format = NULL;
VIR_AUTOFREE(char *) idx = NULL;
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index a77f521302..cb85d147b8 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -94,8 +94,7 @@ static void
virDomainSnapshotDiskDefClear(virDomainSnapshotDiskDefPtr disk)
{
VIR_FREE(disk->name);
- virObjectUnref(disk->src);
- disk->src = NULL;
+ g_clear_object(&disk->src);
}
void
diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c
index c118f2c298..5bac0ec976 100644
--- a/src/qemu/qemu_blockjob.c
+++ b/src/qemu/qemu_blockjob.c
@@ -76,11 +76,11 @@ qemuBlockJobDataDispose(void *obj)
{
qemuBlockJobDataPtr job = obj;
- virObjectUnref(job->chain);
- virObjectUnref(job->mirrorChain);
+ g_clear_object(&job->chain);
+ g_clear_object(&job->mirrorChain);
if (job->type == QEMU_BLOCKJOB_TYPE_CREATE)
- virObjectUnref(job->data.create.src);
+ g_clear_object(&job->data.create.src);
VIR_FREE(job->name);
VIR_FREE(job->errmsg);
@@ -156,7 +156,7 @@ qemuBlockJobRegister(qemuBlockJobDataPtr job,
if (disk) {
job->disk = disk;
- job->chain = virObjectRef(disk->src);
+ job->chain = g_object_ref(disk->src);
QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob = virObjectRef(job);
}
@@ -304,9 +304,9 @@ qemuBlockJobNewCreate(virDomainObjPtr vm,
return NULL;
if (virStorageSourceIsBacking(chain))
- job->chain = virObjectRef(chain);
+ job->chain = g_object_ref(chain);
- job->data.create.src = virObjectRef(src);
+ job->data.create.src = g_object_ref(src);
if (qemuBlockJobRegister(job, vm, NULL, true) < 0)
return NULL;
@@ -337,7 +337,7 @@ qemuBlockJobDiskNewCopy(virDomainObjPtr vm,
if (!(job = qemuBlockJobDataNew(QEMU_BLOCKJOB_TYPE_COPY, jobname)))
return NULL;
- job->mirrorChain = virObjectRef(mirror);
+ job->mirrorChain = g_object_ref(mirror);
if (shallow && !reuse)
job->data.copy.shallownew = true;
@@ -595,7 +595,7 @@ qemuBlockJobRewriteConfigDiskSource(virDomainObjPtr vm,
virStorageSourcePtr newsrc)
{
virDomainDiskDefPtr persistDisk = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) copy = NULL;
+ g_autoptr(virStorageSource) copy = NULL;
virStorageSourcePtr n;
if (!vm->newDef)
@@ -626,7 +626,7 @@ qemuBlockJobRewriteConfigDiskSource(virDomainObjPtr vm,
}
}
- virObjectUnref(persistDisk->src);
+ g_object_unref(persistDisk->src);
VIR_STEAL_PTR(persistDisk->src, copy);
}
@@ -661,7 +661,7 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPtr driver,
disk->dst);
}
- virObjectUnref(disk->src);
+ g_object_unref(disk->src);
disk->src = disk->mirror;
} else {
virStorageSourcePtr n;
@@ -682,7 +682,7 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPtr driver,
}
}
- virObjectUnref(disk->mirror);
+ g_object_unref(disk->mirror);
}
for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
@@ -777,8 +777,7 @@ qemuBlockJobEventProcessLegacy(virQEMUDriverPtr driver,
}
}
- virObjectUnref(disk->mirror);
- disk->mirror = NULL;
+ g_clear_object(&disk->mirror);
}
disk->mirrorState = VIR_DOMAIN_DISK_MIRROR_STATE_NONE;
disk->mirrorJob = VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN;
@@ -957,14 +956,14 @@ qemuBlockJobProcessEventCompletedPull(virQEMUDriverPtr driver,
if (baseparent)
baseparent->backingStore = NULL;
qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob, tmp);
- virObjectUnref(tmp);
+ g_object_unref(tmp);
if (cfgdisk) {
tmp = cfgdisk->src->backingStore;
cfgdisk->src->backingStore = cfgbase;
if (cfgbaseparent)
cfgbaseparent->backingStore = NULL;
- virObjectUnref(tmp);
+ g_object_unref(tmp);
}
}
@@ -1126,8 +1125,7 @@ qemuBlockJobProcessEventCompletedActiveCommit(virQEMUDriverPtr
driver,
virObjectUnref(job->data.commit.top);
job->data.commit.top = NULL;
/* the mirror element does not serve functional purpose for the commit job */
- virObjectUnref(job->disk->mirror);
- job->disk->mirror = NULL;
+ g_clear_object(&job->disk->mirror);
}
@@ -1153,7 +1151,7 @@ qemuBlockJobProcessEventConcludedCopyPivot(virQEMUDriverPtr driver,
qemuBlockJobRewriteConfigDiskSource(vm, job->disk, job->disk->mirror);
qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob,
job->disk->src);
- virObjectUnref(job->disk->src);
+ g_object_unref(job->disk->src);
VIR_STEAL_PTR(job->disk->src, job->disk->mirror);
}
@@ -1170,8 +1168,7 @@ qemuBlockJobProcessEventConcludedCopyAbort(virQEMUDriverPtr driver,
return;
qemuBlockJobEventProcessConcludedRemoveChain(driver, vm, asyncJob,
job->disk->mirror);
- virObjectUnref(job->disk->mirror);
- job->disk->mirror = NULL;
+ g_clear_object(&job->disk->mirror);
}
@@ -1201,8 +1198,7 @@ qemuBlockJobProcessEventFailedActiveCommit(virQEMUDriverPtr driver,
}
}
- virObjectUnref(disk->mirror);
- disk->mirror = NULL;
+ g_clear_object(&disk->mirror);
}
@@ -1218,8 +1214,7 @@ qemuBlockJobProcessEventConcludedCreate(virQEMUDriverPtr driver,
* it will handle further hotplug of the created volume and also that
* the 'chain' which was registered is under their control */
if (job->synchronous) {
- virObjectUnref(job->chain);
- job->chain = NULL;
+ g_clear_object(&job->chain);
return;
}
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 35067c851f..8f97db3db6 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -3015,7 +3015,7 @@ qemuDomainObjPrivateXMLParseBlockjobChain(xmlNodePtr node,
VIR_AUTOFREE(char *) format = NULL;
VIR_AUTOFREE(char *) type = NULL;
VIR_AUTOFREE(char *) index = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) src = NULL;
+ g_autoptr(virStorageSource) src = NULL;
xmlNodePtr sourceNode;
unsigned int xmlflags = VIR_DOMAIN_DEF_PARSE_STATUS;
@@ -3220,7 +3220,7 @@ qemuDomainObjPrivateXMLParseBlockjobData(virDomainObjPtr vm,
if (mirror) {
if (disk)
- job->mirrorChain = virObjectRef(disk->mirror);
+ job->mirrorChain = g_object_ref(disk->mirror);
else
invalidData = true;
}
@@ -3313,7 +3313,7 @@ qemuDomainObjPrivateXMLParseJobNBDSource(xmlNodePtr node,
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
VIR_AUTOFREE(char *) format = NULL;
VIR_AUTOFREE(char *) type = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) migrSource = NULL;
+ g_autoptr(virStorageSource) migrSource = NULL;
xmlNodePtr sourceNode;
ctxt->node = node;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index bc0ede2fb0..237b205fef 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -255,7 +255,7 @@ qemuSecurityChownCallback(const virStorageSource *src,
int save_errno = 0;
int ret = -1;
int rv;
- VIR_AUTOUNREF(virStorageSourcePtr) cpy = NULL;
+ g_autoptr(virStorageSource) cpy = NULL;
rv = virStorageFileSupportsSecurityDriver(src);
if (rv <= 0)
@@ -15424,9 +15424,9 @@ qemuDomainSnapshotDiskCleanup(qemuDomainSnapshotDiskDataPtr data,
if (data[i].prepared)
qemuDomainStorageSourceAccessRevoke(driver, vm, data[i].src);
- virObjectUnref(data[i].src);
+ g_object_unref(data[i].src);
}
- virObjectUnref(data[i].persistsrc);
+ g_object_unref(data[i].persistsrc);
VIR_FREE(data[i].relPath);
qemuBlockStorageSourceChainDataFree(data[i].crdata);
}
@@ -15450,7 +15450,7 @@ qemuDomainSnapshotDiskPrepareOne(virQEMUDriverPtr driver,
qemuDomainObjPrivatePtr priv = vm->privateData;
char *backingStoreStr;
virDomainDiskDefPtr persistdisk;
- VIR_AUTOUNREF(virStorageSourcePtr) terminator = NULL;
+ g_autoptr(virStorageSource) terminator = NULL;
bool supportsCreate;
bool supportsBacking;
int rc;
@@ -18212,7 +18212,7 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm,
bool mirror_shallow = !!(flags & VIR_DOMAIN_BLOCK_COPY_SHALLOW);
bool existing = mirror_reuse;
qemuBlockJobDataPtr job = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) mirror = mirrorsrc;
+ g_autoptr(virStorageSource) mirror = mirrorsrc;
bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
bool mirror_initialized = false;
VIR_AUTOPTR(qemuBlockStorageSourceChainData) data = NULL;
@@ -18485,7 +18485,7 @@ qemuDomainBlockRebase(virDomainPtr dom, const char *path, const
char *base,
virDomainObjPtr vm;
int ret = -1;
unsigned long long speed = bandwidth;
- VIR_AUTOUNREF(virStorageSourcePtr) dest = NULL;
+ g_autoptr(virStorageSource) dest = NULL;
virCheckFlags(VIR_DOMAIN_BLOCK_REBASE_SHALLOW |
VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT |
@@ -18690,7 +18690,7 @@ qemuDomainBlockCommit(virDomainPtr dom,
VIR_AUTOFREE(char *) backingPath = NULL;
unsigned long long speed = bandwidth;
qemuBlockJobDataPtr job = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) mirror = NULL;
+ g_autoptr(virStorageSource) mirror = NULL;
const char *nodetop = NULL;
const char *nodebase = NULL;
bool persistjob = false;
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index e9285f0964..674afb7247 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -636,8 +636,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
ignore_value(qemuDomainStorageSourceChainAccessRevoke(driver, vm, oldsrc));
/* media was changed, so we can remove the old media definition now */
- virObjectUnref(oldsrc);
- oldsrc = NULL;
+ g_clear_object(&oldsrc);
disk->src = newsrc;
ret = 0;
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index a98ec2d55a..a21e1f8e01 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -797,7 +797,7 @@ qemuMigrationSrcNBDStorageCopyBlockdev(virQEMUDriverPtr driver,
VIR_AUTOPTR(qemuBlockStorageSourceAttachData) data = NULL;
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
int mon_ret = 0;
- VIR_AUTOUNREF(virStorageSourcePtr) copysrc = NULL;
+ g_autoptr(virStorageSource) copysrc = NULL;
VIR_DEBUG("starting blockdev mirror for disk=%s to host=%s", diskAlias,
host);
diff --git a/src/storage/storage_backend_gluster.c
b/src/storage/storage_backend_gluster.c
index 5955d834d9..8cb822f0cf 100644
--- a/src/storage/storage_backend_gluster.c
+++ b/src/storage/storage_backend_gluster.c
@@ -239,7 +239,7 @@ virStorageBackendGlusterRefreshVol(virStorageBackendGlusterStatePtr
state,
ssize_t len;
int backingFormat;
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) meta = NULL;
+ g_autoptr(virStorageSourcePtr) meta = NULL;
VIR_AUTOFREE(char *) header = NULL;
*volptr = NULL;
diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c
index be084119f4..c5aab148f2 100644
--- a/src/storage/storage_util.c
+++ b/src/storage/storage_util.c
@@ -3359,7 +3359,7 @@ storageBackendProbeTarget(virStorageSourcePtr target,
int backingStoreFormat;
int rc;
struct stat sb;
- VIR_AUTOUNREF(virStorageSourcePtr) meta = NULL;
+ g_autoptr(virStorageSource) meta = NULL;
VIR_AUTOCLOSE fd = -1;
if (encryption)
@@ -3529,7 +3529,7 @@ virStorageBackendRefreshLocal(virStoragePoolObjPtr pool)
int ret = -1;
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
VIR_AUTOCLOSE fd = -1;
- VIR_AUTOUNREF(virStorageSourcePtr) target = NULL;
+ g_autoptr(virStorageSource) target = NULL;
if (virDirOpen(&dir, def->target.path) < 0)
goto cleanup;
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 497ade927e..568e310290 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -47,7 +47,38 @@
VIR_LOG_INIT("util.storagefile");
-static virClassPtr virStorageSourceClass;
+G_DEFINE_TYPE(virStorageSource, vir_storagesource, G_TYPE_OBJECT)
+
+static void vir_storagesource_init(virStorageSource *ident G_GNUC_UNUSED)
+{
+}
+
+
+static void
+virStorageSourceFinalize(GObject *obj)
+{
+ virStorageSourcePtr src = VIR_STORAGESOURCE(obj);
+
+ virStorageSourceClear(src);
+
+ G_OBJECT_CLASS(vir_storagesource_parent_class)->finalize(obj);
+}
+
+
+static void vir_storagesource_class_init(virStorageSourceClass *klass)
+{
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
+
+ obj->finalize = virStorageSourceFinalize;
+}
+
+
+virStorageSourcePtr
+virStorageSourceNew(void)
+{
+ return VIR_STORAGESOURCE(g_object_new(VIR_TYPE_STORAGESOURCE, NULL));
+}
+
VIR_ENUM_IMPL(virStorage,
VIR_STORAGE_TYPE_LAST,
@@ -1129,7 +1160,7 @@ static virStorageSourcePtr
virStorageFileMetadataNew(const char *path,
int format)
{
- VIR_AUTOUNREF(virStorageSourcePtr) def = NULL;
+ g_autoptr(virStorageSource) def = NULL;
virStorageSourcePtr ret = NULL;
if (!(def = virStorageSourceNew()))
@@ -1219,7 +1250,7 @@ virStorageFileGetMetadataFromFD(const char *path,
struct stat sb;
int dummy;
VIR_AUTOFREE(char *) buf = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) meta = NULL;
+ g_autoptr(virStorageSource) meta = NULL;
if (!backingFormat)
backingFormat = &dummy;
@@ -2251,7 +2282,7 @@ virStorageSourceCopy(const virStorageSource *src,
bool backingChain)
{
virStorageSourcePtr ret = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) def = NULL;
+ g_autoptr(virStorageSource) def = NULL;
if (!(def = virStorageSourceNew()))
return NULL;
@@ -2591,37 +2622,6 @@ virStorageSourceClear(virStorageSourcePtr def)
}
-static void
-virStorageSourceDispose(void *obj)
-{
- virStorageSourcePtr src = obj;
-
- virStorageSourceClear(src);
-}
-
-
-static int
-virStorageSourceOnceInit(void)
-{
- if (!VIR_CLASS_NEW(virStorageSource, virClassForObject()))
- return -1;
-
- return 0;
-}
-
-
-VIR_ONCE_GLOBAL_INIT(virStorageSource);
-
-
-virStorageSourcePtr
-virStorageSourceNew(void)
-{
- if (virStorageSourceInitialize() < 0)
- return NULL;
-
- return virObjectNew(virStorageSourceClass);
-}
-
static virStorageSourcePtr
virStorageSourceNewFromBackingRelative(virStorageSourcePtr parent,
@@ -2629,7 +2629,7 @@ virStorageSourceNewFromBackingRelative(virStorageSourcePtr parent,
{
virStorageSourcePtr ret = NULL;
VIR_AUTOFREE(char *) dirname = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) def = NULL;
+ g_autoptr(virStorageSource) def = NULL;
if (!(def = virStorageSourceNew()))
return NULL;
@@ -3681,7 +3681,7 @@ virStorageSourceNewFromBackingAbsolute(const char *path,
{
const char *json;
int rc = 0;
- VIR_AUTOUNREF(virStorageSourcePtr) def = NULL;
+ g_autoptr(virStorageSource) def = NULL;
*src = NULL;
@@ -3748,7 +3748,7 @@ virStorageSourceNewFromChild(virStorageSourcePtr parent,
virStorageSourcePtr *child)
{
struct stat st;
- VIR_AUTOUNREF(virStorageSourcePtr) def = NULL;
+ g_autoptr(virStorageSource) def = NULL;
int rc = 0;
*child = NULL;
@@ -3948,7 +3948,7 @@ virStorageSourceUpdateCapacity(virStorageSourcePtr src,
bool probe)
{
int format = src->format;
- VIR_AUTOUNREF(virStorageSourcePtr) meta = NULL;
+ g_autoptr(virStorageSource) meta = NULL;
/* Raw files: capacity is physical size. For all other files: if
* the metadata has a capacity, use that, otherwise fall back to
@@ -4943,7 +4943,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
int backingFormat;
int rv;
VIR_AUTOFREE(char *) buf = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) backingStore = NULL;
+ g_autoptr(virStorageSource) backingStore = NULL;
VIR_DEBUG("path=%s format=%d uid=%u gid=%u",
src->path, src->format,
@@ -5028,7 +5028,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
VIR_STEAL_PTR(src->backingStore, backingStore);
if (src->externalDataStoreRaw) {
- VIR_AUTOUNREF(virStorageSourcePtr) externalDataStore = NULL;
+ g_autoptr(virStorageSource) externalDataStore = NULL;
if ((rv = virStorageSourceNewFromExternalData(src,
&externalDataStore)) < 0)
@@ -5121,7 +5121,7 @@ virStorageFileGetBackingStoreStr(virStorageSourcePtr src,
ssize_t headerLen;
int rv;
VIR_AUTOFREE(char *) buf = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) tmp = NULL;
+ g_autoptr(virStorageSource) tmp = NULL;
*backing = NULL;
diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
index cfee047e6f..b4eca6448d 100644
--- a/src/util/virstoragefile.h
+++ b/src/util/virstoragefile.h
@@ -21,8 +21,10 @@
#pragma once
+#include <glib-object.h>
#include <sys/stat.h>
+#include "internal.h"
#include "virbitmap.h"
#include "virobject.h"
#include "virseclabel.h"
@@ -234,7 +236,9 @@ struct _virStorageSourceInitiatorDef {
typedef struct _virStorageDriverData virStorageDriverData;
typedef virStorageDriverData *virStorageDriverDataPtr;
-typedef struct _virStorageSource virStorageSource;
+#define VIR_TYPE_STORAGESOURCE vir_storagesource_get_type()
+G_DECLARE_FINAL_TYPE(virStorageSource, vir_storagesource, VIR, STORAGESOURCE, GObject);
+
typedef virStorageSource *virStorageSourcePtr;
/* Stores information related to a host resource. In the case of backing
@@ -243,7 +247,7 @@ typedef virStorageSource *virStorageSourcePtr;
* IMPORTANT: When adding fields to this struct it's also necessary to add
* appropriate code to the virStorageSourceCopy deep copy function */
struct _virStorageSource {
- virObject parent;
+ GObject parent;
unsigned int id; /* backing chain identifier, 0 is unset */
int type; /* virStorageType */
@@ -344,7 +348,6 @@ struct _virStorageSource {
bool hostcdrom; /* backing device is a cdrom */
};
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStorageSource, virObjectUnref);
#ifndef DEV_BSIZE
diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c
index bb0579056e..cd4d0edf45 100644
--- a/tests/qemublocktest.c
+++ b/tests/qemublocktest.c
@@ -54,8 +54,8 @@ testBackingXMLjsonXML(const void *args)
VIR_AUTOFREE(char *) propsstr = NULL;
VIR_AUTOFREE(char *) protocolwrapper = NULL;
VIR_AUTOFREE(char *) actualxml = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) xmlsrc = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) jsonsrc = NULL;
+ g_autoptr(virStorageSource) xmlsrc = NULL;
+ g_autoptr(virStorageSource) jsonsrc = NULL;
if (!(xmlsrc = virStorageSourceNew()))
return -1;
@@ -400,7 +400,7 @@ testQemuImageCreate(const void *opaque)
struct testQemuImageCreateData *data = (void *) opaque;
VIR_AUTOPTR(virJSONValue) protocolprops = NULL;
VIR_AUTOPTR(virJSONValue) formatprops = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) src = NULL;
+ g_autoptr(virStorageSource) src = NULL;
VIR_AUTOCLEAN(virBuffer) debug = VIR_BUFFER_INITIALIZER;
VIR_AUTOCLEAN(virBuffer) actualbuf = VIR_BUFFER_INITIALIZER;
VIR_AUTOFREE(char *) jsonprotocol = NULL;
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
index 8ebad89da7..f178e66781 100644
--- a/tests/virstoragetest.c
+++ b/tests/virstoragetest.c
@@ -86,7 +86,7 @@ testStorageFileGetMetadata(const char *path,
{
struct stat st;
virStorageSourcePtr ret = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) def = NULL;
+ g_autoptr(virStorageSource) def = NULL;
if (!(def = virStorageSourceNew()))
return NULL;
@@ -278,7 +278,7 @@ testStorageChain(const void *args)
const struct testChainData *data = args;
virStorageSourcePtr elt;
size_t i = 0;
- VIR_AUTOUNREF(virStorageSourcePtr) meta = NULL;
+ g_autoptr(virStorageSource) meta = NULL;
VIR_AUTOFREE(char *) broken = NULL;
meta = testStorageFileGetMetadata(data->start, data->format, -1, -1);
@@ -612,7 +612,7 @@ testBackingParse(const void *args)
const struct testBackingParseData *data = args;
VIR_AUTOCLEAN(virBuffer) buf = VIR_BUFFER_INITIALIZER;
VIR_AUTOFREE(char *) xml = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) src = NULL;
+ g_autoptr(virStorageSource) src = NULL;
int rc;
int erc = data->rv;
@@ -664,7 +664,7 @@ mymain(void)
virStorageSourcePtr chain2; /* short for chain->backingStore */
virStorageSourcePtr chain3; /* short for chain2->backingStore */
VIR_AUTOPTR(virCommand) cmd = NULL;
- VIR_AUTOUNREF(virStorageSourcePtr) chain = NULL;
+ g_autoptr(virStorageSource) chain = NULL;
if (storageRegisterAll() < 0)
return EXIT_FAILURE;
@@ -1056,7 +1056,7 @@ mymain(void)
ret = -1;
/* Test behavior of chain lookups, relative backing from absolute start */
- virObjectUnref(chain);
+ g_object_unref(chain);
chain = testStorageFileGetMetadata(abswrap, VIR_STORAGE_FILE_QCOW2, -1, -1);
if (!chain) {
ret = -1;
@@ -1102,7 +1102,7 @@ mymain(void)
ret = -1;
/* Test behavior of chain lookups, relative backing */
- virObjectUnref(chain);
+ g_object_unref(chain);
chain = testStorageFileGetMetadata("sub/link2", VIR_STORAGE_FILE_QCOW2,
-1, -1);
if (!chain) {
--
2.21.0