提交 f6e13453 编写于 作者: N Nikolay Shirokovskiy 提交者: Maxim Nestratov

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: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Signed-off-by: NMaxim Nestratov <mnestratov@virtuozzo.com>
上级 2e6ff2da
...@@ -3291,29 +3291,35 @@ static PRL_HANDLE ...@@ -3291,29 +3291,35 @@ static PRL_HANDLE
prlsdkGetDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk, bool isCt) prlsdkGetDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk, bool isCt)
{ {
PRL_RESULT pret; PRL_RESULT pret;
PRL_UINT32 hddCount; PRL_UINT32 num;
size_t i; size_t i;
PRL_HANDLE hdd = PRL_INVALID_HANDLE; PRL_HANDLE sdkdisk = PRL_INVALID_HANDLE;
int bus; int bus;
char *dst = NULL; 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); prlsdkCheckRetGoto(pret, error);
for (i = 0; i < hddCount; ++i) { for (i = 0; i < num; ++i) {
pret = PrlVmCfg_GetHardDisk(sdkdom, i, &hdd); pret = PrlVmCfg_GetDevByType(sdkdom, devType, i, &sdkdisk);
prlsdkCheckRetGoto(pret, error); prlsdkCheckRetGoto(pret, error);
if (prlsdkGetDiskId(hdd, isCt, &bus, &dst) < 0) if (prlsdkGetDiskId(sdkdisk, isCt, &bus, &dst) < 0)
goto error; goto error;
if (disk->bus == bus && STREQ(disk->dst, dst)) { if (disk->bus == bus && STREQ(disk->dst, dst)) {
VIR_FREE(dst); VIR_FREE(dst);
return hdd; return sdkdisk;
} }
PrlHandle_Free(hdd); PrlHandle_Free(sdkdisk);
hdd = PRL_INVALID_HANDLE; sdkdisk = PRL_INVALID_HANDLE;
VIR_FREE(dst); VIR_FREE(dst);
} }
...@@ -3324,7 +3330,7 @@ prlsdkGetDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk, bool isCt) ...@@ -3324,7 +3330,7 @@ prlsdkGetDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk, bool isCt)
error: error:
VIR_FREE(dst); VIR_FREE(dst);
PrlHandle_Free(hdd); PrlHandle_Free(sdkdisk);
return PRL_INVALID_HANDLE; return PRL_INVALID_HANDLE;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册