From f6e13453e797797acf37a97f61a2283cc9a56591 Mon Sep 17 00:00:00 2001 From: Nikolay Shirokovskiy Date: Wed, 20 Apr 2016 17:05:29 +0300 Subject: [PATCH] vz: make prlsdkGetDisk more generic Current implementation works with hard disks only. This patch adds support for any disk device (cdroms and hdds right now). Signed-off-by: Nikolay Shirokovskiy Signed-off-by: Maxim Nestratov --- src/vz/vz_sdk.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index a06196ca22..2d83ad5137 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -3291,29 +3291,35 @@ static PRL_HANDLE prlsdkGetDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk, bool isCt) { PRL_RESULT pret; - PRL_UINT32 hddCount; + PRL_UINT32 num; size_t i; - PRL_HANDLE hdd = PRL_INVALID_HANDLE; + PRL_HANDLE sdkdisk = PRL_INVALID_HANDLE; int bus; char *dst = NULL; + PRL_DEVICE_TYPE devType; - pret = PrlVmCfg_GetHardDisksCount(sdkdom, &hddCount); + if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK) + devType = PDE_HARD_DISK; + else + devType = PDE_OPTICAL_DISK; + + pret = PrlVmCfg_GetDevsCountByType(sdkdom, devType, &num); prlsdkCheckRetGoto(pret, error); - for (i = 0; i < hddCount; ++i) { - pret = PrlVmCfg_GetHardDisk(sdkdom, i, &hdd); + for (i = 0; i < num; ++i) { + pret = PrlVmCfg_GetDevByType(sdkdom, devType, i, &sdkdisk); prlsdkCheckRetGoto(pret, error); - if (prlsdkGetDiskId(hdd, isCt, &bus, &dst) < 0) + if (prlsdkGetDiskId(sdkdisk, isCt, &bus, &dst) < 0) goto error; if (disk->bus == bus && STREQ(disk->dst, dst)) { VIR_FREE(dst); - return hdd; + return sdkdisk; } - PrlHandle_Free(hdd); - hdd = PRL_INVALID_HANDLE; + PrlHandle_Free(sdkdisk); + sdkdisk = PRL_INVALID_HANDLE; VIR_FREE(dst); } @@ -3324,7 +3330,7 @@ prlsdkGetDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk, bool isCt) error: VIR_FREE(dst); - PrlHandle_Free(hdd); + PrlHandle_Free(sdkdisk); return PRL_INVALID_HANDLE; }