mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
parallels: add prlsdkDelDisk and prlsdkGetDiskIndex functions
Signed-off-by: Maxim Nestratov <mnestratov@parallels.com>
This commit is contained in:
parent
922563e73a
commit
0d20195e53
@ -2851,6 +2851,25 @@ static void prlsdkDelNet(parallelsConnPtr privconn, virDomainNetDefPtr net)
|
|||||||
PrlHandle_Free(vnet);
|
PrlHandle_Free(vnet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int prlsdkDelDisk(PRL_HANDLE sdkdom, int idx)
|
||||||
|
{
|
||||||
|
int ret = -1;
|
||||||
|
PRL_RESULT pret;
|
||||||
|
PRL_HANDLE sdkdisk = PRL_INVALID_HANDLE;
|
||||||
|
|
||||||
|
pret = PrlVmCfg_GetHardDisk(sdkdom, idx, &sdkdisk);
|
||||||
|
prlsdkCheckRetGoto(pret, cleanup);
|
||||||
|
|
||||||
|
pret = PrlVmDev_Remove(sdkdisk);
|
||||||
|
prlsdkCheckRetGoto(pret, cleanup);
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
PrlHandle_Free(sdkdisk);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int prlsdkAddDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk, bool bootDisk)
|
static int prlsdkAddDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk, bool bootDisk)
|
||||||
{
|
{
|
||||||
PRL_RESULT pret;
|
PRL_RESULT pret;
|
||||||
@ -3048,6 +3067,52 @@ prlsdkAttachVolume(virConnectPtr conn,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
prlsdkGetDiskIndex(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk)
|
||||||
|
{
|
||||||
|
int idx = -1;
|
||||||
|
char *buf = NULL;
|
||||||
|
PRL_UINT32 buflen = 0;
|
||||||
|
PRL_RESULT pret;
|
||||||
|
PRL_UINT32 hddCount;
|
||||||
|
PRL_UINT32 i;
|
||||||
|
PRL_HANDLE hdd = PRL_INVALID_HANDLE;
|
||||||
|
|
||||||
|
pret = PrlVmCfg_GetHardDisksCount(sdkdom, &hddCount);
|
||||||
|
prlsdkCheckRetGoto(pret, cleanup);
|
||||||
|
|
||||||
|
for (i = 0; i < hddCount; ++i) {
|
||||||
|
|
||||||
|
pret = PrlVmCfg_GetHardDisk(sdkdom, i, &hdd);
|
||||||
|
prlsdkCheckRetGoto(pret, cleanup);
|
||||||
|
|
||||||
|
pret = PrlVmDev_GetFriendlyName(hdd, 0, &buflen);
|
||||||
|
prlsdkCheckRetGoto(pret, cleanup);
|
||||||
|
|
||||||
|
if (VIR_ALLOC_N(buf, buflen) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
pret = PrlVmDev_GetFriendlyName(hdd, buf, &buflen);
|
||||||
|
prlsdkCheckRetGoto(pret, cleanup);
|
||||||
|
|
||||||
|
if (STRNEQ(disk->src->path, buf)) {
|
||||||
|
|
||||||
|
PrlHandle_Free(hdd);
|
||||||
|
hdd = PRL_INVALID_HANDLE;
|
||||||
|
VIR_FREE(buf);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
VIR_FREE(buf);
|
||||||
|
idx = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
PrlHandle_Free(hdd);
|
||||||
|
return idx;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
prlsdkAddFS(PRL_HANDLE sdkdom, virDomainFSDefPtr fs)
|
prlsdkAddFS(PRL_HANDLE sdkdom, virDomainFSDefPtr fs)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user