conf: move common disk source functions

Move some functions out of domain_conf for use in the next
patch where snapshot starts to directly use structs in
virstoragefile.

* src/conf/domain_conf.c (virDomainDiskDefFree)
(virDomainDiskSourcePoolDefParse): Adjust callers.
(virDomainDiskSourceDefClear, virDomainDiskSourcePoolDefFree)
(virDomainDiskAuthClear): Move...
* src/util/virstoragefile.c (virStorageSourceClear)
(virStorageSourcePoolDefFree, virStorageSourceAuthClear): ...and
rename.
* src/conf/domain_conf.h (virDomainDiskAuthClear): Drop
declaration.
* src/qemu/qemu_conf.c (qemuTranslateDiskSourcePool): Adjust
caller.
* src/util/virstoragefile.h: Declare them.
* src/libvirt_private.syms (virstoragefile.h): Export them.

Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Eric Blake 2014-03-29 12:00:38 -06:00
parent 885ac290ea
commit 7a4fd22b17
6 changed files with 58 additions and 53 deletions

View File

@ -1179,42 +1179,6 @@ void virDomainLeaseDefFree(virDomainLeaseDefPtr def)
VIR_FREE(def);
}
static void
virDomainDiskSourcePoolDefFree(virStorageSourcePoolDefPtr def)
{
if (!def)
return;
VIR_FREE(def->pool);
VIR_FREE(def->volume);
VIR_FREE(def);
}
static void
virDomainDiskSourceDefClear(virStorageSourcePtr def)
{
size_t i;
if (!def)
return;
VIR_FREE(def->path);
virDomainDiskSourcePoolDefFree(def->srcpool);
VIR_FREE(def->driverName);
virStorageEncryptionFree(def->encryption);
if (def->seclabels) {
for (i = 0; i < def->nseclabels; i++)
virSecurityDeviceLabelDefFree(def->seclabels[i]);
VIR_FREE(def->seclabels);
}
virStorageNetHostDefFree(def->nhosts, def->hosts);
virDomainDiskAuthClear(def);
}
void
virDomainDiskDefFree(virDomainDiskDefPtr def)
@ -1222,7 +1186,7 @@ virDomainDiskDefFree(virDomainDiskDefPtr def)
if (!def)
return;
virDomainDiskSourceDefClear(&def->src);
virStorageSourceClear(&def->src);
VIR_FREE(def->serial);
VIR_FREE(def->dst);
virStorageFileFreeMetadata(def->backingChain);
@ -1236,18 +1200,6 @@ virDomainDiskDefFree(virDomainDiskDefPtr def)
}
void
virDomainDiskAuthClear(virStorageSourcePtr def)
{
VIR_FREE(def->auth.username);
if (def->auth.secretType == VIR_STORAGE_SECRET_TYPE_USAGE)
VIR_FREE(def->auth.secret.usage);
def->auth.secretType = VIR_STORAGE_SECRET_TYPE_NONE;
}
int
virDomainDiskGetType(virDomainDiskDefPtr def)
{
@ -4995,7 +4947,7 @@ virDomainDiskSourcePoolDefParse(xmlNodePtr node,
ret = 0;
cleanup:
virDomainDiskSourcePoolDefFree(source);
virStorageSourcePoolDefFree(source);
VIR_FREE(mode);
return ret;
}

View File

@ -2125,7 +2125,6 @@ void virDomainGraphicsDefFree(virDomainGraphicsDefPtr def);
void virDomainInputDefFree(virDomainInputDefPtr def);
void virDomainDiskDefFree(virDomainDiskDefPtr def);
void virDomainLeaseDefFree(virDomainLeaseDefPtr def);
void virDomainDiskAuthClear(virStorageSourcePtr def);
int virDomainDiskGetType(virDomainDiskDefPtr def);
void virDomainDiskSetType(virDomainDiskDefPtr def, int type);
int virDomainDiskGetActualType(virDomainDiskDefPtr def);

View File

@ -181,7 +181,6 @@ virDomainDeviceGetInfo;
virDomainDeviceInfoCopy;
virDomainDeviceInfoIterate;
virDomainDeviceTypeToString;
virDomainDiskAuthClear;
virDomainDiskBusTypeToString;
virDomainDiskCacheTypeFromString;
virDomainDiskCacheTypeToString;
@ -1840,6 +1839,9 @@ virStorageNetHostDefFree;
virStorageNetHostTransportTypeFromString;
virStorageNetHostTransportTypeToString;
virStorageNetProtocolTypeToString;
virStorageSourceAuthClear;
virStorageSourceClear;
virStorageSourcePoolDefFree;
virStorageSourcePoolModeTypeFromString;
virStorageSourcePoolModeTypeToString;
virStorageTypeFromString;

View File

@ -1310,7 +1310,7 @@ qemuTranslateDiskSourcePool(virConnectPtr conn,
VIR_FREE(def->src.path);
virStorageNetHostDefFree(def->src.nhosts, def->src.hosts);
virDomainDiskAuthClear(&def->src);
virStorageSourceAuthClear(&def->src);
switch ((enum virStoragePoolType) pooldef->type) {
case VIR_STORAGE_POOL_DIR:

View File

@ -1531,3 +1531,52 @@ virStorageNetHostDefCopy(size_t nhosts,
virStorageNetHostDefFree(nhosts, ret);
return NULL;
}
void
virStorageSourcePoolDefFree(virStorageSourcePoolDefPtr def)
{
if (!def)
return;
VIR_FREE(def->pool);
VIR_FREE(def->volume);
VIR_FREE(def);
}
void
virStorageSourceAuthClear(virStorageSourcePtr def)
{
VIR_FREE(def->auth.username);
if (def->auth.secretType == VIR_STORAGE_SECRET_TYPE_USAGE)
VIR_FREE(def->auth.secret.usage);
def->auth.secretType = VIR_STORAGE_SECRET_TYPE_NONE;
}
void
virStorageSourceClear(virStorageSourcePtr def)
{
size_t i;
if (!def)
return;
VIR_FREE(def->path);
virStorageSourcePoolDefFree(def->srcpool);
VIR_FREE(def->driverName);
virStorageEncryptionFree(def->encryption);
if (def->seclabels) {
for (i = 0; i < def->nseclabels; i++)
virSecurityDeviceLabelDefFree(def->seclabels[i]);
VIR_FREE(def->seclabels);
}
virStorageNetHostDefFree(def->nhosts, def->hosts);
virStorageSourceAuthClear(def);
}

View File

@ -262,5 +262,8 @@ void virStorageNetHostDefFree(size_t nhosts, virStorageNetHostDefPtr hosts);
virStorageNetHostDefPtr virStorageNetHostDefCopy(size_t nhosts,
virStorageNetHostDefPtr hosts);
void virStorageSourceAuthClear(virStorageSourcePtr def);
void virStorageSourcePoolDefFree(virStorageSourcePoolDefPtr def);
void virStorageSourceClear(virStorageSourcePtr def);
#endif /* __VIR_STORAGE_FILE_H__ */