unsigned int flags,
virDomainXMLOptionPtr xmlopt)
{
- virStorageSourcePtr backingStore = NULL;
xmlNodePtr save_ctxt = ctxt->node;
xmlNodePtr source;
char *type = NULL;
char *format = NULL;
char *idx = NULL;
int ret = -1;
+ VIR_AUTOPTR(virStorageSource) backingStore = NULL;
if (!(ctxt->node = virXPathNode("./backingStore", ctxt))) {
ret = 0;
ret = 0;
cleanup:
- virStorageSourceFree(backingStore);
VIR_FREE(type);
VIR_FREE(format);
VIR_FREE(idx);
{
xmlNodePtr savedNode = ctxt->node;
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
- virStorageSourcePtr migrSource = NULL;
char *format = NULL;
char *type = NULL;
int ret = -1;
+ VIR_AUTOPTR(virStorageSource) migrSource = NULL;
ctxt->node = node;
ret = 0;
cleanup:
- virStorageSourceFree(migrSource);
VIR_FREE(format);
VIR_FREE(type);
ctxt->node = savedNode;
uid_t uid,
gid_t gid)
{
- virStorageSourcePtr cpy = NULL;
struct stat sb;
int save_errno = 0;
int ret = -1;
int rv;
+ VIR_AUTOPTR(virStorageSource) cpy = NULL;
rv = virStorageFileSupportsSecurityDriver(src);
if (rv <= 0)
cleanup:
save_errno = errno;
virStorageFileDeinit(cpy);
- virStorageSourceFree(cpy);
errno = save_errno;
return ret;
virDomainObjPtr vm;
int ret = -1;
unsigned long long speed = bandwidth;
- virStorageSourcePtr dest = NULL;
+ VIR_AUTOPTR(virStorageSource) dest = NULL;
virCheckFlags(VIR_DOMAIN_BLOCK_REBASE_SHALLOW |
VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT |
cleanup:
virDomainObjEndAPI(&vm);
- virStorageSourceFree(dest);
return ret;
}
char *topPath = NULL;
char *basePath = NULL;
char *backingPath = NULL;
- virStorageSourcePtr mirror = NULL;
unsigned long long speed = bandwidth;
qemuBlockJobDataPtr job = NULL;
qemuBlockJobType jobtype = QEMU_BLOCKJOB_TYPE_COMMIT;
+ VIR_AUTOPTR(virStorageSource) mirror = NULL;
/* XXX Add support for COMMIT_DELETE */
virCheckFlags(VIR_DOMAIN_BLOCK_COMMIT_SHALLOW |
virFreeError(orig_err);
}
}
- virStorageSourceFree(mirror);
qemuBlockJobStartupFinalize(job);
qemuDomainObjEndJob(driver, vm);
{
qemuBlockStorageSourceAttachDataPtr data = NULL;
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
- virStorageSourcePtr copysrc = NULL;
int mon_ret = 0;
int ret = -1;
+ VIR_AUTOPTR(virStorageSource) copysrc = NULL;
VIR_DEBUG("starting blockdev mirror for disk=%s to host=%s", diskAlias, host);
cleanup:
qemuBlockStorageSourceAttachDataFree(data);
- virStorageSourceFree(copysrc);
return ret;
}
{
int ret = -1;
glfs_fd_t *fd = NULL;
- virStorageSourcePtr meta = NULL;
ssize_t len;
int backingFormat;
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
+ VIR_AUTOPTR(virStorageSource) meta = NULL;
VIR_AUTOFREE(char *) header = NULL;
*volptr = NULL;
VIR_STEAL_PTR(*volptr, vol);
ret = 0;
cleanup:
- virStorageSourceFree(meta);
if (fd)
glfs_close(fd);
return ret;
virStorageEncryptionPtr *encryption)
{
int backingStoreFormat;
- int ret = -1;
int rc;
- virStorageSourcePtr meta = NULL;
struct stat sb;
+ VIR_AUTOPTR(virStorageSource) meta = NULL;
VIR_AUTOCLOSE fd = -1;
if (encryption)
fd = rc;
if (virStorageBackendUpdateVolTargetInfoFD(target, fd, &sb) < 0)
- goto cleanup;
+ return -1;
if (S_ISDIR(sb.st_mode)) {
if (storageBackendIsPloopDir(target->path)) {
if (storageBackendRedoPloopUpdate(target, &sb, &fd,
VIR_STORAGE_VOL_FS_PROBE_FLAGS) < 0)
- goto cleanup;
+ return -1;
} else {
target->format = VIR_STORAGE_FILE_DIR;
- ret = 0;
- goto cleanup;
+ return 0;
}
}
fd,
VIR_STORAGE_FILE_AUTO,
&backingStoreFormat)))
- goto cleanup;
+ return -1;
if (meta->backingStoreRaw) {
if (!(target->backingStore = virStorageSourceNewFromBacking(meta)))
- goto cleanup;
+ return -1;
target->backingStore->format = backingStoreFormat;
virStorageSourceFree(target->backingStore);
if (VIR_ALLOC(target->backingStore) < 0)
- goto cleanup;
+ return -1;
target->backingStore->type = VIR_STORAGE_TYPE_NETWORK;
target->backingStore->path = meta->backingStoreRaw;
target->format = meta->format;
/* Default to success below this point */
- ret = 0;
-
if (meta->capacity)
target->capacity = meta->capacity;
VIR_STEAL_PTR(target->compat, meta->compat);
}
- cleanup:
- virStorageSourceFree(meta);
- return ret;
+ return 0;
}
struct dirent *ent;
struct statvfs sb;
struct stat statbuf;
- virStorageSourcePtr target = NULL;
int direrr;
int ret = -1;
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
VIR_AUTOCLOSE fd = -1;
+ VIR_AUTOPTR(virStorageSource) target = NULL;
if (virDirOpen(&dir, def->target.path) < 0)
goto cleanup;
ret = 0;
cleanup:
VIR_DIR_CLOSE(dir);
- virStorageSourceFree(target);
if (ret < 0)
virStoragePoolObjClearVols(pool);
return ret;
virStorageSourcePtr parent);
VIR_DEFINE_AUTOPTR_FUNC(virStorageAuthDef, virStorageAuthDefFree);
+VIR_DEFINE_AUTOPTR_FUNC(virStorageSource, virStorageSourceFree);
#endif /* LIBVIRT_VIRSTORAGEFILE_H */
xmlDocPtr xml = NULL;
xmlXPathContextPtr ctxt = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- virStorageSourcePtr xmlsrc = NULL;
- virStorageSourcePtr jsonsrc = NULL;
virJSONValuePtr backendprops = NULL;
virJSONValuePtr wrapper = NULL;
char *propsstr = NULL;
char *protocolwrapper = NULL;
char *actualxml = NULL;
int ret = -1;
+ VIR_AUTOPTR(virStorageSource) xmlsrc = NULL;
+ VIR_AUTOPTR(virStorageSource) jsonsrc = NULL;
if (VIR_ALLOC(xmlsrc) < 0)
return -1;
ret = 0;
cleanup:
- virStorageSourceFree(xmlsrc);
- virStorageSourceFree(jsonsrc);
VIR_FREE(propsstr);
VIR_FREE(protocolwrapper);
VIR_FREE(actualxml);
uid_t uid, gid_t gid)
{
struct stat st;
- virStorageSourcePtr def = NULL;
+ virStorageSourcePtr ret = NULL;
+ VIR_AUTOPTR(virStorageSource) def = NULL;
if (VIR_ALLOC(def) < 0)
return NULL;
}
if (VIR_STRDUP(def->path, path) < 0)
- goto error;
+ return NULL;
if (virStorageFileGetMetadata(def, uid, gid, false) < 0)
- goto error;
-
- return def;
+ return NULL;
- error:
- virStorageSourceFree(def);
- return NULL;
+ VIR_STEAL_PTR(ret, def);
+ return ret;
}
static int
testStorageChain(const void *args)
{
const struct testChainData *data = args;
- int ret = -1;
- virStorageSourcePtr meta;
virStorageSourcePtr elt;
size_t i = 0;
+ VIR_AUTOPTR(virStorageSource) meta = NULL;
VIR_AUTOFREE(char *) broken = NULL;
meta = testStorageFileGetMetadata(data->start, data->format, -1, -1);
if (!meta) {
if (data->flags & EXP_FAIL) {
virResetLastError();
- ret = 0;
+ return 0;
}
- goto cleanup;
+ return -1;
} else if (data->flags & EXP_FAIL) {
fprintf(stderr, "call should have failed\n");
- goto cleanup;
+ return -1;
}
if (data->flags & EXP_WARN) {
if (virGetLastErrorCode() == VIR_ERR_OK) {
fprintf(stderr, "call should have warned\n");
- goto cleanup;
+ return -1;
}
virResetLastError();
if (virStorageFileChainGetBroken(meta, &broken) || !broken) {
fprintf(stderr, "call should identify broken part of chain\n");
- goto cleanup;
+ return -1;
}
} else {
if (virGetLastErrorCode()) {
fprintf(stderr, "call should not have warned\n");
- goto cleanup;
+ return -1;
}
if (virStorageFileChainGetBroken(meta, &broken) || broken) {
fprintf(stderr, "chain should not be identified as broken\n");
- goto cleanup;
+ return -1;
}
}
if (i == data->nfiles) {
fprintf(stderr, "probed chain was too long\n");
- goto cleanup;
+ return -1;
}
if (virAsprintf(&expect,
elt->format,
virStorageNetProtocolTypeToString(elt->protocol),
NULLSTR(elt->nhosts ? elt->hosts[0].name : NULL)) < 0) {
- goto cleanup;
+ return -1;
}
if (STRNEQ(expect, actual)) {
virTestDifference(stderr, expect, actual);
- goto cleanup;
+ return -1;
}
elt = elt->backingStore;
i++;
}
if (i != data->nfiles) {
fprintf(stderr, "probed chain was too short\n");
- goto cleanup;
+ return -1;
}
- ret = 0;
- cleanup:
- virStorageSourceFree(meta);
- return ret;
+ return 0;
}
struct testLookupData
{
const struct testBackingParseData *data = args;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- virStorageSourcePtr src = NULL;
int ret = -1;
VIR_AUTOFREE(char *) xml = NULL;
+ VIR_AUTOPTR(virStorageSource) src = NULL;
if (!(src = virStorageSourceNewFromBackingAbsolute(data->backing))) {
if (!data->expect)
ret = 0;
cleanup:
- virStorageSourceFree(src);
virBufferFreeAndReset(&buf);
return ret;
struct testPathCanonicalizeData data3;
struct testPathRelativeBacking data4;
struct testBackingParseData data5;
- virStorageSourcePtr chain = NULL;
virStorageSourcePtr chain2; /* short for chain->backingStore */
virStorageSourcePtr chain3; /* short for chain2->backingStore */
VIR_AUTOPTR(virCommand) cmd = NULL;
+ VIR_AUTOPTR(virStorageSource) chain = NULL;
if (storageRegisterAll() < 0)
return EXIT_FAILURE;
cleanup:
/* Final cleanup */
- virStorageSourceFree(chain);
testCleanupImages();
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;