From e4aa80dfde2c9237c8d587dc18fd751624cfc513 Mon Sep 17 00:00:00 2001 From: Maxim Nestratov Date: Mon, 5 Dec 2016 16:52:56 +0300 Subject: [PATCH] vz: get disks statistics for CTs A CT disk statistics is reported with prefix "hdd" and we should use it to extract data. Signed-off-by: Maxim Nestratov --- src/vz/vz_driver.c | 10 ++++++++-- src/vz/vz_sdk.c | 41 ++++++++++++++++++++++++----------------- src/vz/vz_sdk.h | 2 +- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 0a84cee750..746498b11e 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -1746,7 +1746,10 @@ vzDomainBlockStatsImpl(virDomainObjPtr dom, virReportError(VIR_ERR_INVALID_ARG, _("invalid path: %s"), path); return -1; } - if (prlsdkGetBlockStats(privdom->stats, dom->def->disks[idx], stats) < 0) + if (prlsdkGetBlockStats(privdom->stats, + dom->def->disks[idx], + stats, + IS_CT(dom->def)) < 0) return -1; } else { virDomainBlockStatsStruct s; @@ -1759,7 +1762,10 @@ vzDomainBlockStatsImpl(virDomainObjPtr dom, #undef PARALLELS_ZERO_STATS for (i = 0; i < dom->def->ndisks; i++) { - if (prlsdkGetBlockStats(privdom->stats, dom->def->disks[i], &s) < 0) + if (prlsdkGetBlockStats(privdom->stats, + dom->def->disks[i], + &s, + IS_CT(dom->def)) < 0) return -1; #define PARALLELS_SUM_STATS(VAR, TYPE, NAME) \ diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index 089a4299e0..ced58e5e9a 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -4367,7 +4367,8 @@ prlsdkExtractStatsParam(PRL_HANDLE sdkstats, const char *name, long long *val) int prlsdkGetBlockStats(PRL_HANDLE sdkstats, virDomainDiskDefPtr disk, - virDomainBlockStatsPtr stats) + virDomainBlockStatsPtr stats, + bool isCt) { virDomainDeviceDriveAddressPtr address; int idx; @@ -4376,23 +4377,29 @@ prlsdkGetBlockStats(PRL_HANDLE sdkstats, char *name = NULL; address = &disk->info.addr.drive; - switch (disk->bus) { - case VIR_DOMAIN_DISK_BUS_IDE: - prefix = "ide"; - idx = address->bus * 2 + address->unit; - break; - case VIR_DOMAIN_DISK_BUS_SATA: - prefix = "sata"; + + if (isCt) { + prefix = "hdd"; idx = address->unit; - break; - case VIR_DOMAIN_DISK_BUS_SCSI: - prefix = "scsi"; - idx = address->unit; - break; - default: - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown disk bus: %X"), disk->bus); - goto cleanup; + } else { + switch (disk->bus) { + case VIR_DOMAIN_DISK_BUS_IDE: + prefix = "ide"; + idx = address->bus * 2 + address->unit; + break; + case VIR_DOMAIN_DISK_BUS_SATA: + prefix = "sata"; + idx = address->unit; + break; + case VIR_DOMAIN_DISK_BUS_SCSI: + prefix = "scsi"; + idx = address->unit; + break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown disk bus: %X"), disk->bus); + goto cleanup; + } } diff --git a/src/vz/vz_sdk.h b/src/vz/vz_sdk.h index ef789ab1e6..e4e46dcba1 100644 --- a/src/vz/vz_sdk.h +++ b/src/vz/vz_sdk.h @@ -63,7 +63,7 @@ prlsdkDetachDevice(vzDriverPtr driver, virDomainObjPtr dom, virDomainDeviceDefPt int prlsdkUpdateDevice(vzDriverPtr driver, virDomainObjPtr dom, virDomainDeviceDefPtr dev); int -prlsdkGetBlockStats(PRL_HANDLE sdkstats, virDomainDiskDefPtr disk, virDomainBlockStatsPtr stats); +prlsdkGetBlockStats(PRL_HANDLE sdkstats, virDomainDiskDefPtr disk, virDomainBlockStatsPtr stats, bool isCt); int prlsdkGetNetStats(PRL_HANDLE sdkstas, PRL_HANDLE sdkdom, const char *path, virDomainInterfaceStatsPtr stats); int