[libvirt] [PATCH 5/5] vz: get disks statistics for CTs

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Wed Dec 21 07:30:30 UTC 2016



On 09.12.2016 17:36, Maxim Nestratov wrote:
> A CT disk statistics is reported with prefix "hdd" and we should use
> it to extract data.
> 
> Signed-off-by: Maxim Nestratov <mnestratov at virtuozzo.com>
> ---
>  src/vz/vz_driver.c | 10 ++++++++--
>  src/vz/vz_sdk.c    |  5 +++--
>  src/vz/vz_sdk.h    |  2 +-
>  3 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
> index a634ed2..3a22b07 100644
> --- a/src/vz/vz_driver.c
> +++ b/src/vz/vz_driver.c
> @@ -1743,7 +1743,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;
> @@ -1756,7 +1759,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 9b8b48e..dff531f 100644
> --- a/src/vz/vz_sdk.c
> +++ b/src/vz/vz_sdk.c
> @@ -4360,7 +4360,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;
> @@ -4379,7 +4380,7 @@ prlsdkGetBlockStats(PRL_HANDLE sdkstats,
>          idx = address->unit;
>          break;
>      case VIR_DOMAIN_DISK_BUS_SCSI:
> -        prefix = "scsi";
> +        prefix = isCt ? "hdd" : "scsi";

I would calculate prefix for containers outside the scope of this switch.
Even if it means bigger diff, the switch deserves its own function anyway.

Otherwise ACK.

>          idx = address->unit;
>          break;
>      default:
> diff --git a/src/vz/vz_sdk.h b/src/vz/vz_sdk.h
> index ef789ab..e4e46dc 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
> 




More information about the libvir-list mailing list