提交 fc341eed 编写于 作者: P Peter Krempa

qemu: block: Move and rename qemuHotplugRemoveStorageSourcePrepareData

Move it to qemu_block.c and call it qemuBlockStorageSourceDetachPrepare.
It will be reused in other parts as well.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 3026f6d9
...@@ -1565,6 +1565,63 @@ qemuBlockStorageSourceAttachRollback(qemuMonitorPtr mon, ...@@ -1565,6 +1565,63 @@ qemuBlockStorageSourceAttachRollback(qemuMonitorPtr mon,
} }
/**
* qemuBlockStorageSourceDetachPrepare:
* @src: disk source structure
* @driveAlias: Alias of the -drive backend, the pointer is always consumed
*
* Prepare qemuBlockStorageSourceAttachDataPtr for detaching a single source
* from a VM. If @driveAlias is NULL -blockdev is assumed.
*/
qemuBlockStorageSourceAttachDataPtr
qemuBlockStorageSourceDetachPrepare(virStorageSourcePtr src,
char *driveAlias)
{
qemuDomainStorageSourcePrivatePtr srcpriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
VIR_AUTOPTR(qemuBlockStorageSourceAttachData) data = NULL;
qemuBlockStorageSourceAttachDataPtr ret = NULL;
if (VIR_ALLOC(data) < 0)
goto cleanup;
if (driveAlias) {
VIR_STEAL_PTR(data->driveAlias, driveAlias);
data->driveAdded = true;
} else {
data->formatNodeName = src->nodeformat;
data->formatAttached = true;
data->storageNodeName = src->nodestorage;
data->storageAttached = true;
}
if (src->pr &&
!virStoragePRDefIsManaged(src->pr) &&
VIR_STRDUP(data->prmgrAlias, src->pr->mgralias) < 0)
goto cleanup;
if (VIR_STRDUP(data->tlsAlias, src->tlsAlias) < 0)
goto cleanup;
if (srcpriv) {
if (srcpriv->secinfo &&
srcpriv->secinfo->type == VIR_DOMAIN_SECRET_INFO_TYPE_AES &&
VIR_STRDUP(data->authsecretAlias, srcpriv->secinfo->s.aes.alias) < 0)
goto cleanup;
if (srcpriv->encinfo &&
srcpriv->encinfo->type == VIR_DOMAIN_SECRET_INFO_TYPE_AES &&
VIR_STRDUP(data->encryptsecretAlias, srcpriv->encinfo->s.aes.alias) < 0)
goto cleanup;
}
VIR_STEAL_PTR(ret, data);
cleanup:
VIR_FREE(driveAlias);
return ret;
}
/** /**
* qemuBlockStorageSourceDetachOneBlockdev: * qemuBlockStorageSourceDetachOneBlockdev:
* @driver: qemu driver object * @driver: qemu driver object
......
...@@ -107,6 +107,10 @@ VIR_DEFINE_AUTOPTR_FUNC(qemuBlockStorageSourceAttachData, ...@@ -107,6 +107,10 @@ VIR_DEFINE_AUTOPTR_FUNC(qemuBlockStorageSourceAttachData,
qemuBlockStorageSourceAttachDataPtr qemuBlockStorageSourceAttachDataPtr
qemuBlockStorageSourceAttachPrepareBlockdev(virStorageSourcePtr src); qemuBlockStorageSourceAttachPrepareBlockdev(virStorageSourcePtr src);
qemuBlockStorageSourceAttachDataPtr
qemuBlockStorageSourceDetachPrepare(virStorageSourcePtr src,
char *driveAlias);
int int
qemuBlockStorageSourceAttachApply(qemuMonitorPtr mon, qemuBlockStorageSourceAttachApply(qemuMonitorPtr mon,
qemuBlockStorageSourceAttachDataPtr data); qemuBlockStorageSourceAttachDataPtr data);
......
...@@ -448,64 +448,6 @@ qemuHotplugDiskSourceDataFree(qemuHotplugDiskSourceDataPtr data) ...@@ -448,64 +448,6 @@ qemuHotplugDiskSourceDataFree(qemuHotplugDiskSourceDataPtr data)
} }
/**
* qemuDomainRemoveDiskStorageSourcePrepareData:
* @src: disk source structure
* @driveAlias: Alias of the -drive backend, the pointer is always consumed
*
* Prepare qemuBlockStorageSourceAttachDataPtr for detaching a single source
* from a VM. If @driveAlias is NULL -blockdev is assumed.
*/
static qemuBlockStorageSourceAttachDataPtr
qemuHotplugRemoveStorageSourcePrepareData(virStorageSourcePtr src,
char *driveAlias)
{
qemuDomainStorageSourcePrivatePtr srcpriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
VIR_AUTOPTR(qemuBlockStorageSourceAttachData) data = NULL;
qemuBlockStorageSourceAttachDataPtr ret = NULL;
if (VIR_ALLOC(data) < 0)
goto cleanup;
if (driveAlias) {
VIR_STEAL_PTR(data->driveAlias, driveAlias);
data->driveAdded = true;
} else {
data->formatNodeName = src->nodeformat;
data->formatAttached = true;
data->storageNodeName = src->nodestorage;
data->storageAttached = true;
}
if (src->pr &&
!virStoragePRDefIsManaged(src->pr) &&
VIR_STRDUP(data->prmgrAlias, src->pr->mgralias) < 0)
goto cleanup;
if (VIR_STRDUP(data->tlsAlias, src->tlsAlias) < 0)
goto cleanup;
if (srcpriv) {
if (srcpriv->secinfo &&
srcpriv->secinfo->type == VIR_DOMAIN_SECRET_INFO_TYPE_AES &&
VIR_STRDUP(data->authsecretAlias, srcpriv->secinfo->s.aes.alias) < 0)
goto cleanup;
if (srcpriv->encinfo &&
srcpriv->encinfo->type == VIR_DOMAIN_SECRET_INFO_TYPE_AES &&
VIR_STRDUP(data->encryptsecretAlias, srcpriv->encinfo->s.aes.alias) < 0)
goto cleanup;
}
VIR_STEAL_PTR(ret, data);
cleanup:
VIR_FREE(driveAlias);
return ret;
}
static qemuHotplugDiskSourceDataPtr static qemuHotplugDiskSourceDataPtr
qemuHotplugDiskSourceRemovePrepare(virDomainDiskDefPtr disk, qemuHotplugDiskSourceRemovePrepare(virDomainDiskDefPtr disk,
virStorageSourcePtr src, virStorageSourcePtr src,
...@@ -526,7 +468,7 @@ qemuHotplugDiskSourceRemovePrepare(virDomainDiskDefPtr disk, ...@@ -526,7 +468,7 @@ qemuHotplugDiskSourceRemovePrepare(virDomainDiskDefPtr disk,
goto cleanup; goto cleanup;
for (n = src; virStorageSourceIsBacking(n); n = n->backingStore) { for (n = src; virStorageSourceIsBacking(n); n = n->backingStore) {
if (!(backend = qemuHotplugRemoveStorageSourcePrepareData(n, NULL))) if (!(backend = qemuBlockStorageSourceDetachPrepare(n, NULL)))
goto cleanup; goto cleanup;
if (VIR_APPEND_ELEMENT(data->backends, data->nbackends, backend) < 0) if (VIR_APPEND_ELEMENT(data->backends, data->nbackends, backend) < 0)
...@@ -536,8 +478,7 @@ qemuHotplugDiskSourceRemovePrepare(virDomainDiskDefPtr disk, ...@@ -536,8 +478,7 @@ qemuHotplugDiskSourceRemovePrepare(virDomainDiskDefPtr disk,
if (!(drivealias = qemuAliasDiskDriveFromDisk(disk))) if (!(drivealias = qemuAliasDiskDriveFromDisk(disk)))
goto cleanup; goto cleanup;
if (!(backend = qemuHotplugRemoveStorageSourcePrepareData(src, if (!(backend = qemuBlockStorageSourceDetachPrepare(src, drivealias)))
drivealias)))
goto cleanup; goto cleanup;
if (VIR_APPEND_ELEMENT(data->backends, data->nbackends, backend) < 0) if (VIR_APPEND_ELEMENT(data->backends, data->nbackends, backend) < 0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册