1
0

parallels: add support of removing disks

If some hard disk is not found in new domain configuration, it
should be removed.

Signed-off-by: Dmitry Guryanov <dguryanov@parallels.com>
This commit is contained in:
Dmitry Guryanov 2012-12-04 17:43:13 +04:00 committed by Daniel Veillard
parent d5c4783c64
commit 84e27a6f2a

View File

@ -1576,6 +1576,22 @@ cleanup:
return ret; return ret;
} }
static int parallelsRemoveHdd(parallelsDomObjPtr pdom,
virDomainDiskDefPtr disk)
{
char prlname[16];
prlname[15] = '\0';
snprintf(prlname, 15, "hdd%d", virDiskNameToIndex(disk->dst));
if (parallelsCmdRun(PRLCTL, "set", pdom->uuid,
"--device-del", prlname,
"--detach-only", NULL))
return -1;
return 0;
}
static int static int
parallelsApplyDisksParams(virConnectPtr conn, parallelsDomObjPtr pdom, parallelsApplyDisksParams(virConnectPtr conn, parallelsDomObjPtr pdom,
virDomainDiskDefPtr *olddisks, int nold, virDomainDiskDefPtr *olddisks, int nold,
@ -1594,10 +1610,14 @@ parallelsApplyDisksParams(virConnectPtr conn, parallelsDomObjPtr pdom,
} }
if (!newdisk) { if (!newdisk) {
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, if (parallelsRemoveHdd(pdom, olddisk)) {
_("There is no disk with source '%s' " virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED,
"in the specified config"), olddisks[i]->serial); _("Can't remove disk '%s' "
return -1; "in the specified config"), olddisks[i]->serial);
return -1;
}
continue;
} }
if (olddisk->bus != newdisk->bus || if (olddisk->bus != newdisk->bus ||