Add virStorageSourceNew and refactor places allocating that structure to use the helper. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/conf/domain_conf.c | 10 +++++----- src/conf/snapshot_conf.c | 4 ++-- src/conf/storage_conf.c | 2 +- src/libvirt_private.syms | 1 + src/qemu/qemu_domain.c | 4 ++-- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_migration.c | 4 ++-- src/storage/storage_backend_gluster.c | 2 +- src/storage/storage_backend_logical.c | 2 +- src/storage/storage_util.c | 4 ++-- src/util/virstoragefile.c | 20 ++++++++++++++++---- src/util/virstoragefile.h | 1 + tests/qemublocktest.c | 2 +- tests/virstoragetest.c | 2 +- 14 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 5d49f4388c..52cec5cd3d 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1881,7 +1881,7 @@ virDomainDiskDefNew(virDomainXMLOptionPtr xmlopt) if (VIR_ALLOC(ret) < 0) return NULL; - if (VIR_ALLOC(ret->src) < 0) + if (!(ret->src = virStorageSourceNew())) goto error; if (xmlopt && @@ -2099,7 +2099,7 @@ virDomainFSDefNew(void) if (VIR_ALLOC(ret) < 0) return NULL; - if (VIR_ALLOC(ret->src) < 0) + if (!(ret->src = virStorageSourceNew())) goto cleanup; return ret; @@ -7585,7 +7585,7 @@ virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr sourcenode, /* For the purposes of command line creation, this needs to look * like a disk storage source */ - if (VIR_ALLOC(iscsisrc->src) < 0) + if (!(iscsisrc->src = virStorageSourceNew())) return -1; iscsisrc->src->type = VIR_STORAGE_TYPE_NETWORK; iscsisrc->src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI; @@ -9078,7 +9078,7 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, goto cleanup; } - if (VIR_ALLOC(backingStore) < 0) + if (!(backingStore = virStorageSourceNew())) goto cleanup; /* backing store is always read-only */ @@ -9236,7 +9236,7 @@ virDomainDiskDefMirrorParse(virDomainDiskDefPtr def, char *blockJob = NULL; int ret = -1; - if (VIR_ALLOC(def->mirror) < 0) + if (!(def->mirror = virStorageSourceNew())) goto cleanup; if ((blockJob = virXMLPropString(cur, "job"))) { diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index b16f450a01..5127ebbdfd 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -122,7 +122,7 @@ virDomainSnapshotDiskDefParseXML(xmlNodePtr node, ctxt->node = node; - if (VIR_ALLOC(def->src) < 0) + if (!(def->src = virStorageSourceNew())) goto cleanup; def->name = virXMLPropString(node, "name"); @@ -621,7 +621,7 @@ virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr def, if (virBitmapIsBitSet(map, i)) continue; disk = &def->disks[ndisks++]; - if (VIR_ALLOC(disk->src) < 0) + if (!(disk->src = virStorageSourceNew())) goto cleanup; if (VIR_STRDUP(disk->name, def->dom->disks[i]->dst) < 0) goto cleanup; diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index a2ddecf0f2..d7c17db669 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -1200,7 +1200,7 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool, } if ((backingStore = virXPathString("string(./backingStore/path)", ctxt))) { - if (VIR_ALLOC(def->target.backingStore) < 0) + if (!(def->target.backingStore = virStorageSourceNew())) return NULL; def->target.backingStore->type = VIR_STORAGE_TYPE_FILE; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 67579742fd..0a959c4bf9 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2925,6 +2925,7 @@ virStorageSourceIsLocalStorage; virStorageSourceIsRelative; virStorageSourceIsSameLocation; virStorageSourceNetworkAssignDefaultPorts; +virStorageSourceNew; virStorageSourceNewFromBacking; virStorageSourceNewFromBackingAbsolute; virStorageSourceParseRBDColonString; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index ac01e861f7..0c8feb25be 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2742,7 +2742,7 @@ qemuDomainObjPrivateXMLParseJobNBDSource(xmlNodePtr node, goto cleanup; } - if (VIR_ALLOC(migrSource) < 0) + if (!(migrSource = virStorageSourceNew())) goto cleanup; if (!(type = virXMLPropString(ctxt->node, "type"))) { @@ -9050,7 +9050,7 @@ qemuDomainDetermineDiskChain(virQEMUDriverPtr driver, /* terminate the chain for such images as the code below would do */ if (!disksrc->backingStore && - VIR_ALLOC(disksrc->backingStore) < 0) + !(disksrc->backingStore = virStorageSourceNew())) goto cleanup; /* host cdrom requires special treatment in qemu, so we need to check diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 971f915619..f94955a22f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -17984,7 +17984,7 @@ qemuDomainBlockRebase(virDomainPtr dom, const char *path, const char *base, return qemuDomainBlockPullCommon(driver, vm, path, base, bandwidth, flags); /* If we got here, we are doing a block copy rebase. */ - if (VIR_ALLOC(dest) < 0) + if (!(dest = virStorageSourceNew())) goto cleanup; dest->type = (flags & VIR_DOMAIN_BLOCK_REBASE_COPY_DEV) ? VIR_STORAGE_TYPE_BLOCK : VIR_STORAGE_TYPE_FILE; diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index c93ae33476..8a9dbb5e63 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -794,14 +794,14 @@ qemuMigrationSrcNBDStorageCopyBlockdev(virQEMUDriverPtr driver, VIR_DEBUG("starting blockdev mirror for disk=%s to host=%s", diskAlias, host); - if (VIR_ALLOC(copysrc) < 0) + if (!(copysrc = virStorageSourceNew())) goto cleanup; copysrc->type = VIR_STORAGE_TYPE_NETWORK; copysrc->protocol = VIR_STORAGE_NET_PROTOCOL_NBD; copysrc->format = VIR_STORAGE_FILE_RAW; - if (VIR_ALLOC(copysrc->backingStore) < 0) + if (!(copysrc->backingStore = virStorageSourceNew())) goto cleanup; if (VIR_STRDUP(copysrc->path, diskAlias) < 0) diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_backend_gluster.c index 846a647cb6..854ecf2b67 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -294,7 +294,7 @@ virStorageBackendGlusterRefreshVol(virStorageBackendGlusterStatePtr state, goto cleanup; if (meta->backingStoreRaw) { - if (VIR_ALLOC(vol->target.backingStore) < 0) + if (!(vol->target.backingStore = virStorageSourceNew())) goto cleanup; vol->target.backingStore->type = VIR_STORAGE_TYPE_NETWORK; diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_backend_logical.c index f153d23aec..77e4dfb8b1 100644 --- a/src/storage/storage_backend_logical.c +++ b/src/storage/storage_backend_logical.c @@ -308,7 +308,7 @@ virStorageBackendLogicalMakeVol(char **const groups, * lv is created with "--virtualsize"). */ if (groups[1] && STRNEQ(groups[1], "") && (groups[1][0] != '[')) { - if (VIR_ALLOC(vol->target.backingStore) < 0) + if (!(vol->target.backingStore = virStorageSourceNew())) goto cleanup; if (virAsprintf(&vol->target.backingStore->path, "%s/%s", diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index f18e38733a..3a6cc34b68 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -3402,7 +3402,7 @@ storageBackendProbeTarget(virStorageSourcePtr target, if (!virStorageSourceIsLocalStorage(target->backingStore)) { virStorageSourceFree(target->backingStore); - if (VIR_ALLOC(target->backingStore) < 0) + if (!(target->backingStore = virStorageSourceNew())) return -1; target->backingStore->type = VIR_STORAGE_TYPE_NETWORK; @@ -3576,7 +3576,7 @@ virStorageBackendRefreshLocal(virStoragePoolObjPtr pool) goto cleanup; VIR_DIR_CLOSE(dir); - if (VIR_ALLOC(target)) + if (!(target = virStorageSourceNew())) goto cleanup; if ((fd = open(def->target.path, O_RDONLY)) < 0) { diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index a6d44b64a4..7f52a5fdc7 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -2245,7 +2245,7 @@ virStorageSourceCopy(const virStorageSource *src, { virStorageSourcePtr def = NULL; - if (VIR_ALLOC(def) < 0) + if (!(def = virStorageSourceNew())) return NULL; def->id = src->id; @@ -2562,6 +2562,18 @@ virStorageSourceClear(virStorageSourcePtr def) } +virStorageSourcePtr +virStorageSourceNew(void) +{ + virStorageSourcePtr ret = NULL; + + if (VIR_ALLOC(ret) < 0) + return NULL; + + return ret; +} + + void virStorageSourceFree(virStorageSourcePtr def) { @@ -2580,7 +2592,7 @@ virStorageSourceNewFromBackingRelative(virStorageSourcePtr parent, virStorageSourcePtr def; VIR_AUTOFREE(char *) dirname = NULL; - if (VIR_ALLOC(def) < 0) + if (!(def = virStorageSourceNew())) return NULL; /* store relative name */ @@ -3627,7 +3639,7 @@ virStorageSourceNewFromBackingAbsolute(const char *path) virStorageSourcePtr def; int rc; - if (VIR_ALLOC(def) < 0) + if (!(def = virStorageSourceNew())) return NULL; if (virStorageIsFile(path)) { @@ -4900,7 +4912,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src, } } else { /* add terminator */ - if (VIR_ALLOC(backingStore) < 0) + if (!(backingStore = virStorageSourceNew())) goto cleanup; } diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index 8c3a36d473..48af06653e 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -431,6 +431,7 @@ int virStorageSourceGetActualType(const virStorageSource *def); bool virStorageSourceIsLocalStorage(const virStorageSource *src); bool virStorageSourceIsEmpty(virStorageSourcePtr src); bool virStorageSourceIsBlockLocal(const virStorageSource *src); +virStorageSourcePtr virStorageSourceNew(void); void virStorageSourceFree(virStorageSourcePtr def); void virStorageSourceBackingStoreClear(virStorageSourcePtr def); int virStorageSourceUpdatePhysicalSize(virStorageSourcePtr src, diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c index d7e5e72a0b..813b20a08d 100644 --- a/tests/qemublocktest.c +++ b/tests/qemublocktest.c @@ -55,7 +55,7 @@ testBackingXMLjsonXML(const void *args) VIR_AUTOPTR(virStorageSource) xmlsrc = NULL; VIR_AUTOPTR(virStorageSource) jsonsrc = NULL; - if (VIR_ALLOC(xmlsrc) < 0) + if (!(xmlsrc = virStorageSourceNew())) return -1; xmlsrc->type = data->type; diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c index 646ae78ff0..da70beb1f7 100644 --- a/tests/virstoragetest.c +++ b/tests/virstoragetest.c @@ -98,7 +98,7 @@ testStorageFileGetMetadata(const char *path, virStorageSourcePtr ret = NULL; VIR_AUTOPTR(virStorageSource) def = NULL; - if (VIR_ALLOC(def) < 0) + if (!(def = virStorageSourceNew())) return NULL; def->type = VIR_STORAGE_TYPE_FILE; -- 2.20.1