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] [xen-unstable] (Re)introduce notion of crashed VM power

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] (Re)introduce notion of crashed VM power state.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 26 Jan 2008 03:30:12 -0800
Delivery-date: Sat, 26 Jan 2008 03:30:33 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
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 Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1201267705 0
# Node ID 666573856c5928371435b72d907dd7f06965965f
# Parent  b321ef006189e10d3b733747f508b1fb608810e9
(Re)introduce notion of crashed VM power state.

The crashed power state is necessary to allow both core-dumping a
crashed but preserved VM and renaming/restarting a crashed VM.

Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxxxx>
---
 docs/xen-api/vm-lifecycle.tex                     |    5 ++++-
 docs/xen-api/vm_lifecycle.dot                     |    4 +++-
 docs/xen-api/xenapi-datamodel.tex                 |    1 +
 tools/libxen/include/xen/api/xen_vm_power_state.h |    5 +++++
 tools/libxen/src/xen_vm_power_state.c             |    1 +
 tools/python/xen/xend/XendAPIConstants.py         |    4 +++-
 tools/python/xen/xend/XendConstants.py            |    2 ++
 tools/python/xen/xend/XendDomain.py               |    9 ++++++---
 tools/python/xen/xend/XendDomainInfo.py           |    7 +++++--
 9 files changed, 30 insertions(+), 8 deletions(-)

diff -r b321ef006189 -r 666573856c59 docs/xen-api/vm-lifecycle.tex
--- a/docs/xen-api/vm-lifecycle.tex     Fri Jan 25 13:26:38 2008 +0000
+++ b/docs/xen-api/vm-lifecycle.tex     Fri Jan 25 13:28:25 2008 +0000
@@ -21,7 +21,10 @@
 \end{figure}
 
 Figure~\ref{fig-vm-lifecycle} shows the states that a VM can be in
-and the API calls that can be used to move the VM between these states.
+and the API calls that can be used to move the VM between these states.  The 
crashed
+state indicates that the guest OS running within the VM has crashed.  There is 
no
+API to explicitly move to the crashed state, however a hardShutdown will move 
the
+VM to the powered down state.
 
 \section{VM boot parameters}
 
diff -r b321ef006189 -r 666573856c59 docs/xen-api/vm_lifecycle.dot
--- a/docs/xen-api/vm_lifecycle.dot     Fri Jan 25 13:26:38 2008 +0000
+++ b/docs/xen-api/vm_lifecycle.dot     Fri Jan 25 13:28:25 2008 +0000
@@ -1,6 +1,6 @@ digraph g{
 digraph g{
 
-node [shape=box]; "powered down" paused running suspended;
+node [shape=box]; "powered down" paused running suspended crashed;
 
 "powered down" -> paused [label="start(paused=true)"];
 "powered down" -> running [label="start(paused=false)"];
@@ -11,5 +11,7 @@ paused -> running [label="resume"];
 paused -> running [label="resume"];
 running -> "powered down" [label="cleanShutdown /\nhardShutdown"];
 running -> paused [label="pause"];
+running -> crashed [label="guest OS crash"]
+crashed -> "powered down" [label="hardShutdown"]
 
 }
\ No newline at end of file
diff -r b321ef006189 -r 666573856c59 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Fri Jan 25 13:26:38 2008 +0000
+++ b/docs/xen-api/xenapi-datamodel.tex Fri Jan 25 13:28:25 2008 +0000
@@ -156,6 +156,7 @@ The following enumeration types are used
 \hspace{0.5cm}{\tt Paused} & Paused \\
 \hspace{0.5cm}{\tt Running} & Running \\
 \hspace{0.5cm}{\tt Suspended} & Suspended \\
+\hspace{0.5cm}{\tt Crashed} & Crashed \\
 \hspace{0.5cm}{\tt Unknown} & Some other unknown state \\
 \hline
 \end{longtable}
diff -r b321ef006189 -r 666573856c59 
tools/libxen/include/xen/api/xen_vm_power_state.h
--- a/tools/libxen/include/xen/api/xen_vm_power_state.h Fri Jan 25 13:26:38 
2008 +0000
+++ b/tools/libxen/include/xen/api/xen_vm_power_state.h Fri Jan 25 13:28:25 
2008 +0000
@@ -46,6 +46,11 @@ enum xen_vm_power_state
     XEN_VM_POWER_STATE_SUSPENDED,
 
     /**
+     * Crashed
+     */
+    XEN_VM_POWER_STATE_CRASHED,
+
+    /**
      * Some other unknown state
      */
     XEN_VM_POWER_STATE_UNKNOWN
diff -r b321ef006189 -r 666573856c59 tools/libxen/src/xen_vm_power_state.c
--- a/tools/libxen/src/xen_vm_power_state.c     Fri Jan 25 13:26:38 2008 +0000
+++ b/tools/libxen/src/xen_vm_power_state.c     Fri Jan 25 13:28:25 2008 +0000
@@ -32,6 +32,7 @@ static const char *lookup_table[] =
     "Paused",
     "Running",
     "Suspended",
+    "Crashed",
     "Unknown"
 };
 
diff -r b321ef006189 -r 666573856c59 tools/python/xen/xend/XendAPIConstants.py
--- a/tools/python/xen/xend/XendAPIConstants.py Fri Jan 25 13:26:38 2008 +0000
+++ b/tools/python/xen/xend/XendAPIConstants.py Fri Jan 25 13:28:25 2008 +0000
@@ -25,6 +25,7 @@ XEN_API_VM_POWER_STATE = [
     'Running',
     'Suspended',
     'Halted',
+    'Crashed',
     'Unknown'
 ]
 
@@ -33,7 +34,8 @@ XEN_API_VM_POWER_STATE_RUNNING = 2
 XEN_API_VM_POWER_STATE_RUNNING = 2
 XEN_API_VM_POWER_STATE_SUSPENDED = 3
 XEN_API_VM_POWER_STATE_SHUTTINGDOWN = 4
-XEN_API_VM_POWER_STATE_UNKNOWN = 5
+XEN_API_VM_POWER_STATE_CRASHED = 5
+XEN_API_VM_POWER_STATE_UNKNOWN = 6
 
 XEN_API_ON_NORMAL_EXIT = [
     'destroy',
diff -r b321ef006189 -r 666573856c59 tools/python/xen/xend/XendConstants.py
--- a/tools/python/xen/xend/XendConstants.py    Fri Jan 25 13:26:38 2008 +0000
+++ b/tools/python/xen/xend/XendConstants.py    Fri Jan 25 13:28:25 2008 +0000
@@ -61,6 +61,7 @@ DOM_STATES = [
     'running',
     'suspended',
     'shutdown',
+    'crashed',
     'unknown',
 ]
 
@@ -69,6 +70,7 @@ DOM_STATE_RUNNING = XEN_API_VM_POWER_STA
 DOM_STATE_RUNNING = XEN_API_VM_POWER_STATE_RUNNING
 DOM_STATE_SUSPENDED = XEN_API_VM_POWER_STATE_SUSPENDED
 DOM_STATE_SHUTDOWN = XEN_API_VM_POWER_STATE_SHUTTINGDOWN
+DOM_STATE_CRASHED = XEN_API_VM_POWER_STATE_CRASHED
 DOM_STATE_UNKNOWN = XEN_API_VM_POWER_STATE_UNKNOWN
 
 DOM_STATES_OLD = [
diff -r b321ef006189 -r 666573856c59 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Fri Jan 25 13:26:38 2008 +0000
+++ b/tools/python/xen/xend/XendDomain.py       Fri Jan 25 13:28:25 2008 +0000
@@ -43,6 +43,7 @@ from xen.xend.XendConstants import DOM_S
 from xen.xend.XendConstants import DOM_STATE_HALTED, DOM_STATE_PAUSED
 from xen.xend.XendConstants import DOM_STATE_RUNNING, DOM_STATE_SUSPENDED
 from xen.xend.XendConstants import DOM_STATE_SHUTDOWN, DOM_STATE_UNKNOWN
+from xen.xend.XendConstants import DOM_STATE_CRASHED
 from xen.xend.XendConstants import TRIGGER_TYPE
 from xen.xend.XendDevices import XendDevices
 from xen.xend.XendAPIConstants import *
@@ -69,6 +70,7 @@ POWER_STATE_NAMES = dict([(x, XEN_API_VM
                                     DOM_STATE_RUNNING,
                                     DOM_STATE_SUSPENDED,
                                     DOM_STATE_SHUTDOWN,
+                                    DOM_STATE_CRASHED,
                                     DOM_STATE_UNKNOWN]])
 POWER_STATE_ALL = 'all'
 
@@ -1191,13 +1193,14 @@ class XendDomain:
             if dominfo.getDomid() == DOM0_ID:
                 raise XendError("Cannot pause privileged domain %s" % domid)
             ds = dominfo._stateGet()
-            if ds not in (DOM_STATE_RUNNING, DOM_STATE_PAUSED):
+            if ds not in (DOM_STATE_RUNNING, DOM_STATE_PAUSED, 
DOM_STATE_CRASHED):
                 raise VMBadState("Domain '%s' is not started" % domid,
                                  POWER_STATE_NAMES[DOM_STATE_RUNNING],
                                  POWER_STATE_NAMES[ds])
             log.info("Domain %s (%d) paused.", dominfo.getName(),
                      int(dominfo.getDomid()))
-            dominfo.pause()
+            if ds == DOM_STATE_RUNNING:
+                dominfo.pause()
             if state:
                 return ds
         except XendInvalidDomain:
@@ -1216,7 +1219,7 @@ class XendDomain:
 
         if dominfo.getDomid() == DOM0_ID:
             raise XendError("Cannot dump core for privileged domain %s" % 
domid)
-        if dominfo._stateGet() not in (DOM_STATE_PAUSED, DOM_STATE_RUNNING):
+        if dominfo._stateGet() not in (DOM_STATE_PAUSED, DOM_STATE_RUNNING, 
DOM_STATE_CRASHED):
             raise VMBadState("Domain '%s' is not started" % domid,
                              POWER_STATE_NAMES[DOM_STATE_PAUSED],
                              POWER_STATE_NAMES[dominfo._stateGet()])
diff -r b321ef006189 -r 666573856c59 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Fri Jan 25 13:26:38 2008 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py   Fri Jan 25 13:28:25 2008 +0000
@@ -414,7 +414,7 @@ class XendDomainInfo:
         """
         from xen.xend import XendDomain
 
-        if self._stateGet() in (XEN_API_VM_POWER_STATE_HALTED, 
XEN_API_VM_POWER_STATE_SUSPENDED):
+        if self._stateGet() in (XEN_API_VM_POWER_STATE_HALTED, 
XEN_API_VM_POWER_STATE_SUSPENDED, XEN_API_VM_POWER_STATE_CRASHED):
             try:
                 XendTask.log_progress(0, 30, self._constructDomain)
                 XendTask.log_progress(31, 60, self._initDomain)
@@ -648,7 +648,7 @@ class XendDomainInfo:
         return rc
 
     def getDeviceSxprs(self, deviceClass):
-        if self._stateGet() in (DOM_STATE_RUNNING, DOM_STATE_PAUSED):
+        if self._stateGet() in (DOM_STATE_RUNNING, DOM_STATE_PAUSED, 
DOM_STATE_CRASHED):
             return self.getDeviceController(deviceClass).sxprs()
         else:
             sxprs = []
@@ -2268,6 +2268,9 @@ class XendDomainInfo:
                 return XEN_API_VM_POWER_STATE_SUSPENDED
             else:
                 return XEN_API_VM_POWER_STATE_HALTED
+        elif info['crashed']:
+            # Crashed
+            return XEN_API_VM_POWER_STATE_CRASHED
         else:
             # We are either RUNNING or PAUSED
             if info['paused']:

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] (Re)introduce notion of crashed VM power state., Xen patchbot-unstable <=