mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-21 10:50:24 +03:00
conf: Add functions to copy and free network disk source definitions
To simplify operations on virDomainDiskHostDef arrays we will need deep copy and freeing functions. Add and properly export them.
This commit is contained in:
parent
5a66c667ff
commit
ae361674ac
@ -1216,9 +1216,7 @@ void virDomainDiskDefFree(virDomainDiskDefPtr def)
|
||||
VIR_FREE(def->seclabels);
|
||||
}
|
||||
|
||||
for (i = 0; i < def->nhosts; i++)
|
||||
virDomainDiskHostDefClear(&def->hosts[i]);
|
||||
VIR_FREE(def->hosts);
|
||||
virDomainDiskHostDefFree(def->nhosts, def->hosts);
|
||||
|
||||
VIR_FREE(def);
|
||||
}
|
||||
@ -1233,6 +1231,57 @@ void virDomainDiskHostDefClear(virDomainDiskHostDefPtr def)
|
||||
VIR_FREE(def->socket);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
virDomainDiskHostDefFree(size_t nhosts,
|
||||
virDomainDiskHostDefPtr hosts)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
if (!hosts)
|
||||
return;
|
||||
|
||||
for (i = 0; i < nhosts; i++)
|
||||
virDomainDiskHostDefClear(&hosts[i]);
|
||||
|
||||
VIR_FREE(hosts);
|
||||
}
|
||||
|
||||
|
||||
virDomainDiskHostDefPtr
|
||||
virDomainDiskHostDefCopy(size_t nhosts,
|
||||
virDomainDiskHostDefPtr hosts)
|
||||
{
|
||||
virDomainDiskHostDefPtr ret = NULL;
|
||||
size_t i;
|
||||
|
||||
if (VIR_ALLOC_N(ret, nhosts) < 0)
|
||||
goto error;
|
||||
|
||||
for (i = 0; i < nhosts; i++) {
|
||||
virDomainDiskHostDefPtr src = &hosts[i];
|
||||
virDomainDiskHostDefPtr dst = &ret[i];
|
||||
|
||||
dst->transport = src->transport;
|
||||
|
||||
if (VIR_STRDUP(dst->name, src->name) < 0)
|
||||
goto error;
|
||||
|
||||
if (VIR_STRDUP(dst->port, src->port) < 0)
|
||||
goto error;
|
||||
|
||||
if (VIR_STRDUP(dst->socket, src->socket) < 0)
|
||||
goto error;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
error:
|
||||
virDomainDiskHostDefFree(nhosts, ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void virDomainControllerDefFree(virDomainControllerDefPtr def)
|
||||
{
|
||||
if (!def)
|
||||
|
@ -2210,6 +2210,9 @@ void virDomainInputDefFree(virDomainInputDefPtr def);
|
||||
void virDomainDiskDefFree(virDomainDiskDefPtr def);
|
||||
void virDomainLeaseDefFree(virDomainLeaseDefPtr def);
|
||||
void virDomainDiskHostDefClear(virDomainDiskHostDefPtr def);
|
||||
void virDomainDiskHostDefFree(size_t nhosts, virDomainDiskHostDefPtr hosts);
|
||||
virDomainDiskHostDefPtr virDomainDiskHostDefCopy(size_t nhosts,
|
||||
virDomainDiskHostDefPtr hosts);
|
||||
int virDomainDeviceFindControllerModel(virDomainDefPtr def,
|
||||
virDomainDeviceInfoPtr info,
|
||||
int controllerType);
|
||||
|
@ -198,6 +198,8 @@ virDomainDiskFindByBusAndDst;
|
||||
virDomainDiskGeometryTransTypeFromString;
|
||||
virDomainDiskGeometryTransTypeToString;
|
||||
virDomainDiskHostDefClear;
|
||||
virDomainDiskHostDefCopy;
|
||||
virDomainDiskHostDefFree;
|
||||
virDomainDiskIndexByName;
|
||||
virDomainDiskInsert;
|
||||
virDomainDiskInsertPreAlloced;
|
||||
|
Loading…
x
Reference in New Issue
Block a user