mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-13 00:46:03 -06:00
esx: Add support for storage volume wiping
This commit is contained in:
parent
f770c7b860
commit
37f869dab7
@ -1424,6 +1424,54 @@ esxStorageVolumeDelete(virStorageVolPtr volume, unsigned int flags)
|
||||
|
||||
|
||||
|
||||
static int
|
||||
esxStorageVolumeWipe(virStorageVolPtr volume, unsigned int flags)
|
||||
{
|
||||
int result = -1;
|
||||
esxPrivate *priv = volume->conn->storagePrivateData;
|
||||
char *datastorePath = NULL;
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
char *taskInfoErrorMessage = NULL;
|
||||
|
||||
virCheckFlags(0, -1);
|
||||
|
||||
if (esxVI_EnsureSession(priv->primary) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (virAsprintf(&datastorePath, "[%s] %s", volume->pool, volume->name) < 0) {
|
||||
virReportOOMError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (esxVI_ZeroFillVirtualDisk_Task(priv->primary, datastorePath,
|
||||
priv->primary->datacenter->_reference,
|
||||
&task) < 0 ||
|
||||
esxVI_WaitForTaskCompletion(priv->primary, task, NULL,
|
||||
esxVI_Occurrence_None, priv->autoAnswer,
|
||||
&taskInfoState, &taskInfoErrorMessage) < 0) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (taskInfoState != esxVI_TaskInfoState_Success) {
|
||||
ESX_ERROR(VIR_ERR_INTERNAL_ERROR, _("Could not wipe volume: %s"),
|
||||
taskInfoErrorMessage);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
result = 0;
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(datastorePath);
|
||||
esxVI_ManagedObjectReference_Free(&task);
|
||||
VIR_FREE(taskInfoErrorMessage);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
esxStorageVolumeGetInfo(virStorageVolPtr volume, virStorageVolInfoPtr info)
|
||||
{
|
||||
@ -1623,7 +1671,7 @@ static virStorageDriver esxStorageDriver = {
|
||||
esxStorageVolumeCreateXML, /* volCreateXML */
|
||||
esxStorageVolumeCreateXMLFrom, /* volCreateXMLFrom */
|
||||
esxStorageVolumeDelete, /* volDelete */
|
||||
NULL, /* volWipe */
|
||||
esxStorageVolumeWipe, /* volWipe */
|
||||
esxStorageVolumeGetInfo, /* volGetInfo */
|
||||
esxStorageVolumeDumpXML, /* volGetXMLDesc */
|
||||
esxStorageVolumeGetPath, /* volGetPath */
|
||||
|
@ -916,3 +916,10 @@ method WaitForUpdates returns UpdateSet r
|
||||
ManagedObjectReference _this:PropertyCollector r
|
||||
String version o
|
||||
end
|
||||
|
||||
|
||||
method ZeroFillVirtualDisk_Task returns ManagedObjectReference r
|
||||
ManagedObjectReference _this:VirtualDiskManager r
|
||||
String name r
|
||||
ManagedObjectReference datacenter o
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user