提交 77e7a75a 编写于 作者: D Dawid Zamirski 提交者: Matthias Bolte

ESX: add virStorageVolGetInfo in iSCSI backend.

Since the ESX storage implements VMFS and iSCSI storage backends and
chooses relevant backend dynamically at runtime, there was a segfault
when issuing vol-info on iSCSI volume due to unimplemented
virStorageGetInfo function. This patch implements that function that was
missing in iSCSI backend and returns expected result without a segfault.
上级 e1e4483c
......@@ -621,6 +621,52 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool ATTRIBUTE_UNUSED,
static int
esxStorageVolGetInfo(virStorageVolPtr volume,
virStorageVolInfoPtr info)
{
int result = -1;
esxPrivate *priv = volume->conn->storagePrivateData;
esxVI_ScsiLun *scsiLunList = NULL;
esxVI_ScsiLun *scsiLun;
esxVI_HostScsiDisk *hostScsiDisk = NULL;
if (esxVI_LookupScsiLunList(priv->primary, &scsiLunList) < 0) {
goto cleanup;
}
for (scsiLun = scsiLunList; scsiLun;
scsiLun = scsiLun->_next) {
hostScsiDisk = esxVI_HostScsiDisk_DynamicCast(scsiLun);
if (hostScsiDisk &&
STREQ(hostScsiDisk->deviceName, volume->name)) {
break;
}
}
if (!hostScsiDisk) {
virReportError(VIR_ERR_NO_STORAGE_VOL,
_("Could not find volume with name: %s"),
volume->name);
goto cleanup;
}
info->type = VIR_STORAGE_VOL_BLOCK;
info->capacity = hostScsiDisk->capacity->block->value *
hostScsiDisk->capacity->blockSize->value;
info->allocation = info->capacity;
result = 0;
cleanup:
esxVI_ScsiLun_Free(&scsiLunList);
return result;
}
static char *
esxStorageVolGetXMLDesc(virStorageVolPtr volume,
unsigned int flags)
......@@ -752,6 +798,7 @@ virStorageDriver esxStorageBackendISCSI = {
.storageVolLookupByKey = esxStorageVolLookupByKey, /* 1.0.1 */
.storageVolCreateXML = esxStorageVolCreateXML, /* 1.0.1 */
.storageVolCreateXMLFrom = esxStorageVolCreateXMLFrom, /* 1.0.1 */
.storageVolGetInfo = esxStorageVolGetInfo, /* 1.2.5 */
.storageVolGetXMLDesc = esxStorageVolGetXMLDesc, /* 1.0.1 */
.storageVolDelete = esxStorageVolDelete, /* 1.0.1 */
.storageVolWipe = esxStorageVolWipe, /* 1.0.1 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册