From 232cf2a45c0e0fcc42cad21efd03df8e6fe6f246 Mon Sep 17 00:00:00 2001 From: Chunyan Liu Date: Tue, 15 Jul 2014 13:03:14 +0800 Subject: [PATCH] libxl: add HOSTDEV type in libxlDomainDetachDeviceConfig Missing HOSTDEV type in libxlDomainDetachDeviceConfig. Add it. Signed-off-by: Chunyan Liu --- src/libxl/libxl_driver.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index b27581eae0..5e08bbab01 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -2985,7 +2985,8 @@ static int libxlDomainDetachDeviceConfig(virDomainDefPtr vmdef, virDomainDeviceDefPtr dev) { virDomainDiskDefPtr disk, detach; - int ret = -1; + virDomainHostdevDefPtr hostdev, det_hostdev; + int idx; switch (dev->type) { case VIR_DOMAIN_DEVICE_DISK: @@ -2993,18 +2994,30 @@ libxlDomainDetachDeviceConfig(virDomainDefPtr vmdef, virDomainDeviceDefPtr dev) if (!(detach = virDomainDiskRemoveByName(vmdef, disk->dst))) { virReportError(VIR_ERR_INVALID_ARG, _("no target device %s"), disk->dst); - break; + return -1; } virDomainDiskDefFree(detach); - ret = 0; break; + + case VIR_DOMAIN_DEVICE_HOSTDEV: { + hostdev = dev->data.hostdev; + if ((idx = virDomainHostdevFind(vmdef, hostdev, &det_hostdev)) < 0) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("device not present in domain configuration")); + return -1; + } + virDomainHostdevRemove(vmdef, idx); + virDomainHostdevDefFree(det_hostdev); + break; + } + default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("persistent detach of device is not supported")); - break; + return -1; } - return ret; + return 0; } static int -- 2.47.2