WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 5/7] libxenlight meta-resend: Destroy device model on

To: Stefano Stabellini <Stefano.Stabellini@xxxxxxxxxxxxx>, Vincent Hanquez <vincent.hanquez@xxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 5/7] libxenlight meta-resend: Destroy device model only for domains that have it
From: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
Date: Thu, 03 Dec 2009 12:06:45 -0500
Cc:
Delivery-date: Thu, 03 Dec 2009 09:07:32 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4B16ABAD.6060804@xxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4B16ABAD.6060804@xxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.23 (X11/20090817)
Destroy device model only for domains that have it.

Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>


# HG changeset patch
# User Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
# Date 1259767696 18000
# Node ID 1041697e46cef5c88bed7e7d463b04b306693a5a
# Parent  27143b3c8648d947249c06c09aada5010562aa56
Destroy device model only for domains that have it.

Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>

diff -r 27143b3c8648 -r 1041697e46ce libxl.c
--- a/libxl.c
+++ b/libxl.c
@@ -489,7 +489,16 @@ int libxl_domain_destroy(struct libxl_ct
     char *dom_path, *uuid_str;
     char vm_path[UUID_LEN_STR + 5], vss_path[UUID_LEN_STR + 6], xapi_path[20];
     xen_uuid_t *uuid;
-    int rc;
+    int rc, dm_present;
+
+    if (is_hvm(ctx, domid)) {
+        dm_present = 1;
+    } else {
+        char *pid;
+        pid = libxl_xs_read(ctx, XBT_NULL, libxl_sprintf(ctx, 
"/local/domain/%d/image/device-model-pid", domid));
+        dm_present = (pid != NULL);
+        libxl_free(ctx, pid);
+    }
 
     dom_path = libxl_xs_get_dompath(ctx, domid);
     if (!dom_path)
@@ -501,16 +510,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 (dm_present) {
+        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 (dm_present) {
+        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
<Prev in Thread] Current Thread [Next in Thread>