Re: [libvirt] [PATCH v4 4/9] virstoragefile: Always use virStorageSourceSetBackingStore to set backing store
From 937126fd4075194f9fe24c46ff2d4312b8eddeea Mon Sep 17 00:00:00 2001 From: Matthias Gatto matthias.ga...@outscale.com Date: Tue, 17 Mar 2015 20:25:37 +0100 Subject: [PATCH 4/5] virstoragefile: Always use virStorageSourceSetBackingStore to set backing store Replace the parts of the code where a backing store is set manually with virStorageSourceSetBackingStore Signed-off-by: Matthias Gatto matthias.ga...@outscale.com Signed-off-by: John Ferlan jfer...@redhat.com --- src/conf/domain_conf.c| 3 ++- src/conf/storage_conf.c | 16 +--- src/qemu/qemu_driver.c| 8 src/storage/storage_backend_fs.c | 6 -- src/storage/storage_backend_gluster.c | 4 ++-- src/storage/storage_backend_logical.c | 9 ++--- src/storage/storage_driver.c | 2 +- src/util/virstoragefile.c | 8 +--- tests/virstoragetest.c| 4 ++-- 9 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 0800981..b210b40 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6012,7 +6012,8 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, virDomainDiskBackingStoreParse(ctxt, backingStore) 0) goto cleanup; -src-backingStore = backingStore; +if (!virStorageSourceSetBackingStore(src, backingStore, 0)) +goto cleanup; ret = 0; cleanup: diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 5781374..4fc248b 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -1254,6 +1254,7 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool, char *capacity = NULL; char *unit = NULL; char *backingStore = NULL; +virStorageSourcePtr backingStorePtr; xmlNodePtr node; xmlNodePtr *nodes = NULL; size_t i; @@ -1290,20 +1291,21 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool, } if ((backingStore = virXPathString(string(./backingStore/path), ctxt))) { -if (VIR_ALLOC(ret-target.backingStore) 0) +if (VIR_ALLOC(backingStorePtr) 0) goto error; -ret-target.backingStore-path = backingStore; +virStorageSourceSetBackingStore(ret-target, backingStorePtr, 0); +backingStorePtr-path = backingStore; backingStore = NULL; if (options-formatFromString) { char *format = virXPathString(string(./backingStore/format/@type), ctxt); if (format == NULL) -ret-target.backingStore-format = options-defaultFormat; +backingStorePtr-format = options-defaultFormat; else -ret-target.backingStore-format = (options-formatFromString)(format); +backingStorePtr-format = (options-formatFromString)(format); -if (ret-target.backingStore-format 0) { +if (backingStorePtr-format 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _(unknown volume format type %s), format); VIR_FREE(format); @@ -1312,9 +1314,9 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool, VIR_FREE(format); } -if (VIR_ALLOC(ret-target.backingStore-perms) 0) +if (VIR_ALLOC(backingStorePtr-perms) 0) goto error; -if (virStorageDefParsePerms(ctxt, ret-target.backingStore-perms, +if (virStorageDefParsePerms(ctxt, backingStorePtr-perms, ./backingStore/permissions, DEFAULT_VOL_PERM_MODE) 0) goto error; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d658ed8..7914e8d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14261,12 +14261,12 @@ qemuDomainSnapshotCreateSingleDiskActive(virQEMUDriverPtr driver, /* Update vm in place to match changes. */ need_unlink = false; -newDiskSrc-backingStore = disk-src; +virStorageSourceSetBackingStore(newDiskSrc, disk-src, 0); disk-src = newDiskSrc; newDiskSrc = NULL; if (persistDisk) { -persistDiskSrc-backingStore = persistDisk-src; +virStorageSourceSetBackingStore(persistDiskSrc, persistDisk-src, 0); persistDisk-src = persistDiskSrc; persistDiskSrc = NULL; } @@ -14310,13 +14310,13 @@ qemuDomainSnapshotUndoSingleDiskActive(virQEMUDriverPtr driver, /* Update vm in place to match changes. */ tmp = disk-src; disk-src = virStorageSourceGetBackingStore(tmp, 0); -tmp-backingStore = NULL; +virStorageSourceSetBackingStore(tmp, NULL, 0); virStorageSourceFree(tmp); if (persistDisk) { tmp = persistDisk-src; persistDisk-src = virStorageSourceGetBackingStore(tmp, 0); -tmp-backingStore = NULL; +virStorageSourceSetBackingStore(tmp, NULL, 0); virStorageSourceFree(tmp); } } diff --git
[libvirt] [PATCH v4 4/9] virstoragefile: Always use virStorageSourceSetBackingStore to set backing store
Replace the parts of the code where a backing store is set manually with virStorageSourceSetBackingStore Signed-off-by: Matthias Gatto matthias.ga...@outscale.com --- src/conf/domain_conf.c| 3 ++- src/conf/storage_conf.c | 16 +--- src/qemu/qemu_driver.c| 8 src/storage/storage_backend_fs.c | 8 +--- src/storage/storage_backend_gluster.c | 4 ++-- src/storage/storage_backend_logical.c | 9 ++--- src/storage/storage_driver.c | 2 +- src/util/virstoragefile.c | 8 +--- tests/virstoragetest.c| 4 ++-- 9 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3fd73d7..74f6efa 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5869,7 +5869,8 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, virDomainDiskBackingStoreParse(ctxt, backingStore) 0) goto cleanup; -src-backingStore = backingStore; +if (!virStorageSourceSetBackingStore(src, backingStore, 0)) +goto cleanup; ret = 0; cleanup: diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 7ca678b..a6753e6 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -1255,6 +1255,7 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool, char *capacity = NULL; char *unit = NULL; char *backingStore = NULL; +virStorageSourcePtr backingStorePtr; xmlNodePtr node; xmlNodePtr *nodes = NULL; size_t i; @@ -1291,20 +1292,21 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool, } if ((backingStore = virXPathString(string(./backingStore/path), ctxt))) { -if (VIR_ALLOC(ret-target.backingStore) 0) +if (VIR_ALLOC(backingStorePtr) 0) goto error; -ret-target.backingStore-path = backingStore; +virStorageSourceSetBackingStore(ret-target, backingStorePtr, 0); +backingStorePtr-path = backingStore; backingStore = NULL; if (options-formatFromString) { char *format = virXPathString(string(./backingStore/format/@type), ctxt); if (format == NULL) -ret-target.backingStore-format = options-defaultFormat; +backingStorePtr-format = options-defaultFormat; else -ret-target.backingStore-format = (options-formatFromString)(format); +backingStorePtr-format = (options-formatFromString)(format); -if (ret-target.backingStore-format 0) { +if (backingStorePtr-format 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _(unknown volume format type %s), format); VIR_FREE(format); @@ -1313,9 +1315,9 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool, VIR_FREE(format); } -if (VIR_ALLOC(ret-target.backingStore-perms) 0) +if (VIR_ALLOC(backingStorePtr-perms) 0) goto error; -if (virStorageDefParsePerms(ctxt, ret-target.backingStore-perms, +if (virStorageDefParsePerms(ctxt, backingStorePtr-perms, ./backingStore/permissions, DEFAULT_VOL_PERM_MODE) 0) goto error; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e6fb2ae..8f33970 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14123,12 +14123,12 @@ qemuDomainSnapshotCreateSingleDiskActive(virQEMUDriverPtr driver, /* Update vm in place to match changes. */ need_unlink = false; -newDiskSrc-backingStore = disk-src; +virStorageSourceSetBackingStore(newDiskSrc, disk-src, 0); disk-src = newDiskSrc; newDiskSrc = NULL; if (persistDisk) { -persistDiskSrc-backingStore = persistDisk-src; +virStorageSourceSetBackingStore(persistDiskSrc, persistDisk-src, 0); persistDisk-src = persistDiskSrc; persistDiskSrc = NULL; } @@ -14172,13 +14172,13 @@ qemuDomainSnapshotUndoSingleDiskActive(virQEMUDriverPtr driver, /* Update vm in place to match changes. */ tmp = disk-src; disk-src = virStorageSourceGetBackingStore(tmp, 0); -tmp-backingStore = NULL; +virStorageSourceSetBackingStore(tmp, NULL, 0); virStorageSourceFree(tmp); if (persistDisk) { tmp = persistDisk-src; persistDisk-src = virStorageSourceGetBackingStore(tmp, 0); -tmp-backingStore = NULL; +virStorageSourceSetBackingStore(tmp, NULL, 0); virStorageSourceFree(tmp); } } diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c index 8df2c0d..8c6d0b2 100644 --- a/src/storage/storage_backend_fs.c +++ b/src/storage/storage_backend_fs.c @@ -97,10 +97,12 @@ virStorageBackendProbeTarget(virStorageSourcePtr target, goto cleanup; if