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-changelog

[Xen-changelog] This patch changes the shutdown driver and xend to use s

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] This patch changes the shutdown driver and xend to use strings instead
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 06 Aug 2005 05:54:10 -0400
Delivery-date: Sat, 06 Aug 2005 09:54:41 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 0538ec1fe5b2bf7c185f6bb0590f6e780b78f674
# Parent  69b7c9c3a9fdf22d840132f274f3fa64101a0ed0
This patch changes the shutdown driver and xend to use strings instead
of codes for signaling a shutdown request.

Also, we fix the return code for the shutdown notifier, so other
notifiers will get to run ;)

Signed-off-by: Dan Smith <danms@xxxxxxxxxx>

diff -r 69b7c9c3a9fd -r 0538ec1fe5b2 
linux-2.6-xen-sparse/arch/xen/kernel/reboot.c
--- a/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c     Fri Aug  5 15:11:46 2005
+++ b/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c     Sat Aug  6 09:48:47 2005
@@ -247,19 +247,31 @@
 {
     static DECLARE_WORK(shutdown_work, __shutdown_handler, NULL);
 
-    int type = -1;
-
-    if (!xenbus_scanf("control", "shutdown", "%i", &type)) {
-        printk("Unable to read code in control/shutdown\n");
+    char *str;
+    unsigned int len;
+
+    str = (char *)xenbus_read("control", "shutdown", &len);
+
+    if (! len) {
         return;
-    };
+    }
 
     xenbus_printf("control", "shutdown", "%i", SHUTDOWN_INVALID);
 
-    if ((type == SHUTDOWN_POWEROFF) ||
-        (type == SHUTDOWN_REBOOT)   ||
-        (type == SHUTDOWN_SUSPEND)) {
-        shutting_down = type;
+    if (strncmp(str, "poweroff", len) == 0) {
+        shutting_down = SHUTDOWN_POWEROFF;
+    } else if (strncmp(str, "reboot", len) == 0) {
+        shutting_down = SHUTDOWN_REBOOT;
+    } else if (strncmp(str, "suspend", len) == 0) {
+        shutting_down = SHUTDOWN_SUSPEND;
+    } else {
+        printk("Ignoring shutdown request: %s\n", str);
+        shutting_down = SHUTDOWN_INVALID;
+    }
+
+    kfree(str);
+
+    if (shutting_down != SHUTDOWN_INVALID) {
         schedule_work(&shutdown_work);
     }
 
@@ -271,7 +283,7 @@
     char sysrq_key = '\0';
     
     if (!xenbus_scanf("control", "sysrq", "%c", &sysrq_key)) {
-        printk("Unable to read sysrq code in control/sysrq\n");
+        printk(KERN_ERR "Unable to read sysrq code in control/sysrq\n");
         return;
     }
 
@@ -319,16 +331,16 @@
     up(&xenbus_lock);
 
     if (err1) {
-        printk("Failed to set shutdown watcher\n");
+        printk(KERN_ERR "Failed to set shutdown watcher\n");
     }
     
 #ifdef CONFIG_MAGIC_SYSRQ
     if (err2) {
-        printk("Failed to set sysrq watcher\n");
-    }
-#endif
-
-    return NOTIFY_STOP;
+        printk(KERN_ERR "Failed to set sysrq watcher\n");
+    }
+#endif
+
+    return NOTIFY_DONE;
 }
 
 static int __init setup_shutdown_event(void)
diff -r 69b7c9c3a9fd -r 0538ec1fe5b2 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Fri Aug  5 15:11:46 2005
+++ b/tools/python/xen/xend/XendDomainInfo.py   Sat Aug  6 09:48:47 2005
@@ -50,14 +50,6 @@
     DOMAIN_REBOOT  : "reboot",
     DOMAIN_SUSPEND : "suspend",
     DOMAIN_CRASH   : "crash",
-    }
-
-"""Map shutdown reasons to codes
-"""
-shutdown_codes = {
-    'poweroff' : DOMAIN_POWEROFF,
-    'reboot'   : DOMAIN_REBOOT,
-    'suspend'  : DOMAIN_SUSPEND,
     }
 
 RESTART_ALWAYS   = 'always'
@@ -939,11 +931,10 @@
             self.channel.writeRequest(msg)
 
     def shutdown(self, reason):
-        reasonid = shutdown_codes.get(reason)
-        if reasonid == None:
+        if not reason in shutdown_reasons.values():
             raise XendError('invalid reason:' + reason)
         db = self.db.addChild("/control");
-        db['shutdown'] = '%i' % reasonid;
+        db['shutdown'] = reason;
         db.saveDB(save=True);
         if not reason in ['suspend']:
             self.shutdown_pending = {'start':time.time(), 'reason':reason}

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] This patch changes the shutdown driver and xend to use strings instead, Xen patchbot -unstable <=