All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jim Fehlig <jfehlig@novell.com>
To: John Levon <levon@movementarian.org>
Cc: xen-devel <xen-devel@lists.xensource.com>
Subject: Re: [PATCH] fix xend 'rename-restart' behavior
Date: Fri, 25 Jan 2008 09:12:05 -0700	[thread overview]
Message-ID: <479A0A55.6010301@novell.com> (raw)
In-Reply-To: <20080125011123.GA19970@totally.trollied.org.uk>

[-- Attachment #1: Type: text/plain, Size: 452 bytes --]

John Levon wrote:
> On Thu, Jan 24, 2008 at 03:37:52PM -0700, Jim Fehlig wrote:
>
>   
>> diff -r 31adb5c972d0 -r cc85865f26a7 docs/xen-api/vm-lifecycle.tex
>> --- a/docs/xen-api/vm-lifecycle.tex	Thu Jan 24 14:41:26 2008 +0000
>> +++ b/docs/xen-api/vm-lifecycle.tex	Thu Jan 24 15:20:39 2008 -0700
>>     
>
> There's a change log for the Xen API, I think this needs to be indicated
> and the version bumped.
>   

Right.  Updated patch attached.

Jim


[-- Attachment #2: crashed-power-state.patch --]
[-- Type: text/x-patch, Size: 10158 bytes --]

# HG changeset patch
# User Jim Fehlig <jfehlig@novell.com>
# Date 1201277349 25200
# Node ID fd4e2742f9b6131c3116af976dba85b1af40da41
# Parent  31adb5c972d03e45cb746cd2305126ea2571282f
(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.

This change requires incrementing Xen API version and C-bindings major
version.

Signed-off-by: Jim Fehlig <jfehlig@novell.com>

diff -r 31adb5c972d0 -r fd4e2742f9b6 docs/xen-api/revision-history.tex
--- a/docs/xen-api/revision-history.tex	Thu Jan 24 14:41:26 2008 +0000
+++ b/docs/xen-api/revision-history.tex	Fri Jan 25 09:09:09 2008 -0700
@@ -16,5 +16,12 @@
     \end{flushleft}
    \end{minipage}\\
   \hline
+  1.0.2 & 25th Jan. 08 & J. Fehlig &
+   \begin{minipage}[t]{7cm}
+    \begin{flushleft}
+     Added Crashed VM power state.
+    \end{flushleft}
+   \end{minipage}\\
+  \hline
  \end{tabular}
 \end{center}
\ No newline at end of file
diff -r 31adb5c972d0 -r fd4e2742f9b6 docs/xen-api/vm-lifecycle.tex
--- a/docs/xen-api/vm-lifecycle.tex	Thu Jan 24 14:41:26 2008 +0000
+++ b/docs/xen-api/vm-lifecycle.tex	Fri Jan 25 09:09:09 2008 -0700
@@ -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 31adb5c972d0 -r fd4e2742f9b6 docs/xen-api/vm_lifecycle.dot
--- a/docs/xen-api/vm_lifecycle.dot	Thu Jan 24 14:41:26 2008 +0000
+++ b/docs/xen-api/vm_lifecycle.dot	Fri Jan 25 09:09:09 2008 -0700
@@ -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 31adb5c972d0 -r fd4e2742f9b6 docs/xen-api/xenapi-coversheet.tex
--- a/docs/xen-api/xenapi-coversheet.tex	Thu Jan 24 14:41:26 2008 +0000
+++ b/docs/xen-api/xenapi-coversheet.tex	Fri Jan 25 09:09:09 2008 -0700
@@ -17,12 +17,12 @@
 \newcommand{\coversheetlogo}{xen.eps}
 
 %% Document date
-\newcommand{\datestring}{10th December 2007}
+\newcommand{\datestring}{25th January 2008}
 
 \newcommand{\releasestatement}{Stable Release}
 
 %% Document revision
-\newcommand{\revstring}{API Revision 1.0.1}
+\newcommand{\revstring}{API Revision 1.0.2}
 
 %% Document authors
 \newcommand{\docauthors}{
diff -r 31adb5c972d0 -r fd4e2742f9b6 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex	Thu Jan 24 14:41:26 2008 +0000
+++ b/docs/xen-api/xenapi-datamodel.tex	Fri Jan 25 09:09:09 2008 -0700
@@ -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 31adb5c972d0 -r fd4e2742f9b6 tools/libxen/Makefile
--- a/tools/libxen/Makefile	Thu Jan 24 14:41:26 2008 +0000
+++ b/tools/libxen/Makefile	Fri Jan 25 09:09:09 2008 -0700
@@ -18,7 +18,7 @@ XEN_ROOT=../..
 XEN_ROOT=../..
 include $(XEN_ROOT)/tools/Rules.mk
 
-MAJOR = 1.0
+MAJOR = 1.1
 MINOR = 0
 
 CFLAGS += -Iinclude                     \
diff -r 31adb5c972d0 -r fd4e2742f9b6 tools/libxen/include/xen/api/xen_vm_power_state.h
--- a/tools/libxen/include/xen/api/xen_vm_power_state.h	Thu Jan 24 14:41:26 2008 +0000
+++ b/tools/libxen/include/xen/api/xen_vm_power_state.h	Fri Jan 25 09:09:09 2008 -0700
@@ -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 31adb5c972d0 -r fd4e2742f9b6 tools/libxen/src/xen_vm_power_state.c
--- a/tools/libxen/src/xen_vm_power_state.c	Thu Jan 24 14:41:26 2008 +0000
+++ b/tools/libxen/src/xen_vm_power_state.c	Fri Jan 25 09:09:09 2008 -0700
@@ -32,6 +32,7 @@ static const char *lookup_table[] =
     "Paused",
     "Running",
     "Suspended",
+    "Crashed",
     "Unknown"
 };
 
diff -r 31adb5c972d0 -r fd4e2742f9b6 tools/python/xen/xend/XendAPIConstants.py
--- a/tools/python/xen/xend/XendAPIConstants.py	Thu Jan 24 14:41:26 2008 +0000
+++ b/tools/python/xen/xend/XendAPIConstants.py	Fri Jan 25 09:09:09 2008 -0700
@@ -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 31adb5c972d0 -r fd4e2742f9b6 tools/python/xen/xend/XendConstants.py
--- a/tools/python/xen/xend/XendConstants.py	Thu Jan 24 14:41:26 2008 +0000
+++ b/tools/python/xen/xend/XendConstants.py	Fri Jan 25 09:09:09 2008 -0700
@@ -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 31adb5c972d0 -r fd4e2742f9b6 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py	Thu Jan 24 14:41:26 2008 +0000
+++ b/tools/python/xen/xend/XendDomain.py	Fri Jan 25 09:09:09 2008 -0700
@@ -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 31adb5c972d0 -r fd4e2742f9b6 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py	Thu Jan 24 14:41:26 2008 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py	Fri Jan 25 09:09:09 2008 -0700
@@ -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']:

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

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

      reply	other threads:[~2008-01-25 16:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-24 22:37 [PATCH] fix xend 'rename-restart' behavior Jim Fehlig
2008-01-25  1:11 ` John Levon
2008-01-25 16:12   ` Jim Fehlig [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=479A0A55.6010301@novell.com \
    --to=jfehlig@novell.com \
    --cc=levon@movementarian.org \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.