Destroy device-model only for hvm domains.
Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
# HG changeset patch
# User Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
# Date 1259253630 18000
# Node ID 05e2dad9b117e80c8daf55a30cb7eeda3fda4764
# Parent a19e1cef7b72a90b3cc9c8c38dadf06aaf413155
Destroy device-model only for hvm domains.
Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
diff -r a19e1cef7b72 -r 05e2dad9b117 libxl.c
--- a/libxl.c
+++ b/libxl.c
@@ -443,8 +443,9 @@ int libxl_domain_destroy(struct libxl_ct
{
char *dom_path, vm_path[41];
xen_uuid_t *uuid;
- int rc;
+ int rc, hvm;
+ hvm = is_hvm(ctx, domid);
dom_path = libxl_xs_get_dompath(ctx, domid);
if (!dom_path)
return -1;
@@ -455,16 +456,20 @@ int libxl_domain_destroy(struct libxl_ct
}
if (libxl_device_pci_shutdown(ctx, domid) < 0)
XL_LOG(ctx, XL_LOG_ERROR, "pci shutdown failed for domid %d", domid);
- xs_write(ctx->xsh, XBT_NULL,
- libxl_sprintf(ctx, "/local/domain/0/device-model/%d/command",
domid),
- "shutdown", strlen("shutdown"));
+ if (hvm) {
+ xs_write(ctx->xsh, XBT_NULL,
+ libxl_sprintf(ctx, "/local/domain/0/device-model/%d/command",
domid),
+ "shutdown", strlen("shutdown"));
+ }
rc = xc_domain_pause(ctx->xch, domid);
if (rc < 0) {
XL_LOG_ERRNOVAL(ctx, XL_LOG_ERROR, rc, "xc_domain_pause failed for
%d", domid);
return -1;
}
- if (libxl_destroy_device_model(ctx, domid) < 0)
- XL_LOG(ctx, XL_LOG_ERROR, "libxl_destroy_device_model failed for %d",
domid);
+ if (hvm) {
+ if (libxl_destroy_device_model(ctx, domid) < 0)
+ XL_LOG(ctx, XL_LOG_ERROR, "libxl_destroy_device_model failed for
%d", domid);
+ }
if (libxl_devices_destroy(ctx, domid, force) < 0)
XL_LOG(ctx, XL_LOG_ERROR, "libxl_destroy_devices failed for %d",
domid);
if (!xs_rm(ctx->xsh, XBT_NULL, dom_path))
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|