From 9689dfaad3a186d294458ecb60ea3958022870fa Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 8 Apr 2014 08:42:57 +0200 Subject: [PATCH] storage: Refactor storage file initialization to use virStorageSourcePtr Now that storage source metadata is stored in a single struct we don't need two initialization functions for different structs. --- src/qemu/qemu_driver.c | 6 ++--- src/storage/storage_backend.c | 1 + src/storage/storage_driver.c | 41 ++++++----------------------------- src/storage/storage_driver.h | 9 ++++---- 4 files changed, 15 insertions(+), 42 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5b0e484998..d824e2452c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12489,7 +12489,7 @@ qemuDomainSnapshotPrepareDiskExternal(virConnectPtr conn, return -1; } - if (!(snapfile = virStorageFileInitFromSnapshotDef(snapdisk))) + if (!(snapfile = virStorageFileInit(&snapdisk->src))) return -1; if (virStorageFileStat(snapfile, &st) < 0) { @@ -12757,7 +12757,7 @@ qemuDomainSnapshotCreateSingleDiskActive(virQEMUDriverPtr driver, virStorageFileFreeMetadata(disk->backingChain); disk->backingChain = NULL; - if (!(snapfile = virStorageFileInitFromSnapshotDef(snap))) + if (!(snapfile = virStorageFileInit(&snap->src))) goto cleanup; if (qemuDomainSnapshotDiskGetSourceString(snap, &source) < 0) @@ -12914,7 +12914,7 @@ qemuDomainSnapshotUndoSingleDiskActive(virQEMUDriverPtr driver, virStorageFilePtr diskfile = NULL; struct stat st; - diskfile = virStorageFileInitFromDiskDef(disk); + diskfile = virStorageFileInit(&disk->src); if (VIR_STRDUP(source, origdisk->src.path) < 0 || (persistDisk && VIR_STRDUP(persistSource, source) < 0)) diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index b56fefe34b..8f9df78603 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -55,6 +55,7 @@ #include "virfile.h" #include "stat-time.h" #include "virstring.h" +#include "virxml.h" #if WITH_STORAGE_LVM # include "storage_backend_logical.h" diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index d58d98655e..ed347319a1 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -2770,26 +2770,22 @@ virStorageFileFree(virStorageFilePtr file) } -static virStorageFilePtr -virStorageFileInitInternal(int type, - const char *path, - int protocol, - size_t nhosts, - virStorageNetHostDefPtr hosts) +virStorageFilePtr +virStorageFileInit(virStorageSourcePtr src) { virStorageFilePtr file = NULL; if (VIR_ALLOC(file) < 0) return NULL; - file->type = type; - file->protocol = protocol; - file->nhosts = nhosts; + file->type = virStorageSourceGetActualType(src); + file->protocol = src->protocol; + file->nhosts = src->nhosts; - if (VIR_STRDUP(file->path, path) < 0) + if (VIR_STRDUP(file->path, src->path) < 0) goto error; - if (!(file->hosts = virStorageNetHostDefCopy(nhosts, hosts))) + if (!(file->hosts = virStorageNetHostDefCopy(src->nhosts, src->hosts))) goto error; if (!(file->backend = virStorageFileBackendForType(file->type, @@ -2810,29 +2806,6 @@ virStorageFileInitInternal(int type, } -virStorageFilePtr -virStorageFileInitFromDiskDef(virDomainDiskDefPtr disk) -{ - return virStorageFileInitInternal(virStorageSourceGetActualType(&disk->src), - disk->src.path, - disk->src.protocol, - disk->src.nhosts, - disk->src.hosts); -} - - -virStorageFilePtr -virStorageFileInitFromSnapshotDef(virDomainSnapshotDiskDefPtr disk) -{ - return virStorageFileInitInternal(virStorageSourceGetActualType(&disk->src), - disk->src.path, - disk->src.protocol, - disk->src.nhosts, - disk->src.hosts); -} - - - /** * virStorageFileCreate: Creates an empty storage file via storage driver * diff --git a/src/storage/storage_driver.h b/src/storage/storage_driver.h index 886a4d5037..9771207a1f 100644 --- a/src/storage/storage_driver.h +++ b/src/storage/storage_driver.h @@ -24,9 +24,10 @@ #ifndef __VIR_STORAGE_DRIVER_H__ # define __VIR_STORAGE_DRIVER_H__ +# include + # include "storage_conf.h" -# include "conf/domain_conf.h" -# include "conf/snapshot_conf.h" +# include "virstoragefile.h" typedef struct _virStorageFileBackend virStorageFileBackend; typedef virStorageFileBackend *virStorageFileBackendPtr; @@ -46,9 +47,7 @@ struct _virStorageFile { }; virStorageFilePtr -virStorageFileInitFromDiskDef(virDomainDiskDefPtr disk); -virStorageFilePtr -virStorageFileInitFromSnapshotDef(virDomainSnapshotDiskDefPtr disk); +virStorageFileInit(virStorageSourcePtr src); void virStorageFileFree(virStorageFilePtr file); int virStorageFileCreate(virStorageFilePtr file); -- GitLab