[libvirt] [PATCH 09/11] New domain state pmsuspended
Daniel Veillard
veillard at redhat.com
Fri Mar 23 09:55:15 UTC 2012
On Wed, Mar 14, 2012 at 11:26:53PM +0800, Osier Yang wrote:
> This introduces a new domain state pmsuspended to represent
> the domain which has been suspended by guest power management,
> e.g. (entered itno s3 state). Because a "running" state could
typo: into !
> be confused in this case, one will see the guest is paused
> actually while playing. And state "paused" is for the domain
> which was paused by virDomainSuspend.
> ---
> include/libvirt/libvirt.h.in | 23 ++++++++++++++++-------
> src/conf/domain_conf.c | 38 +++++++++++++++++++++++++++++---------
> tools/virsh.c | 10 ++++++++++
> tools/virsh.pod | 7 ++++++-
> 4 files changed, 61 insertions(+), 17 deletions(-)
>
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index caf5085..12ba63f 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -86,13 +86,15 @@ typedef virDomain *virDomainPtr;
> * A domain may be in different states at a given point in time
> */
> typedef enum {
> - VIR_DOMAIN_NOSTATE = 0, /* no state */
> - VIR_DOMAIN_RUNNING = 1, /* the domain is running */
> - VIR_DOMAIN_BLOCKED = 2, /* the domain is blocked on resource */
> - VIR_DOMAIN_PAUSED = 3, /* the domain is paused by user */
> - VIR_DOMAIN_SHUTDOWN= 4, /* the domain is being shut down */
> - VIR_DOMAIN_SHUTOFF = 5, /* the domain is shut off */
> - VIR_DOMAIN_CRASHED = 6, /* the domain is crashed */
> + VIR_DOMAIN_NOSTATE = 0, /* no state */
> + VIR_DOMAIN_RUNNING = 1, /* the domain is running */
> + VIR_DOMAIN_BLOCKED = 2, /* the domain is blocked on resource */
> + VIR_DOMAIN_PAUSED = 3, /* the domain is paused by user */
> + VIR_DOMAIN_SHUTDOWN= 4, /* the domain is being shut down */
> + VIR_DOMAIN_SHUTOFF = 5, /* the domain is shut off */
> + VIR_DOMAIN_CRASHED = 6, /* the domain is crashed */
> + VIR_DOMAIN_PMSUSPENDED = 7, /* the domain is suspended by guest
> + power management */
>
> #ifdef VIR_ENUM_SENTINELS
> /*
> @@ -183,6 +185,13 @@ typedef enum {
> #endif
> } virDomainCrashedReason;
>
> +typedef enum {
> + VIR_DOMAIN_PMSUSPENDED_UNKNOWN = 0,
> +
> +#ifdef VIR_ENUM_SENTINELS
> + VIR_DOMAIN_PMSUSPENDED_LAST
> +#endif
> +} virDomainPMSuspendedReason;
>
> /**
> * virDomainControlState:
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 10174ab..29ff556 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -511,7 +511,8 @@ VIR_ENUM_IMPL(virDomainState, VIR_DOMAIN_LAST,
> "paused",
> "shutdown",
> "shutoff",
> - "crashed")
> + "crashed",
> + "pmsuspended")
>
> /* virDomainSnapshotState is really virDomainState plus one extra state */
> VIR_ENUM_IMPL(virDomainSnapshotState, VIR_DOMAIN_SNAPSHOT_STATE_LAST,
> @@ -522,6 +523,7 @@ VIR_ENUM_IMPL(virDomainSnapshotState, VIR_DOMAIN_SNAPSHOT_STATE_LAST,
> "shutdown",
> "shutoff",
> "crashed",
> + "pmsuspended",
> "disk-snapshot")
I was wondering why we didn't add at the end but that's normal based
on virDomainSnapshotState comment.
> #define VIR_DOMAIN_NOSTATE_LAST (VIR_DOMAIN_NOSTATE_UNKNOWN + 1)
> @@ -14308,14 +14310,32 @@ virDomainObjSetState(virDomainObjPtr dom, virDomainState state, int reason)
> int last = -1;
>
> switch (state) {
> - case VIR_DOMAIN_NOSTATE: last = VIR_DOMAIN_NOSTATE_LAST; break;
> - case VIR_DOMAIN_RUNNING: last = VIR_DOMAIN_RUNNING_LAST; break;
> - case VIR_DOMAIN_BLOCKED: last = VIR_DOMAIN_BLOCKED_LAST; break;
> - case VIR_DOMAIN_PAUSED: last = VIR_DOMAIN_PAUSED_LAST; break;
> - case VIR_DOMAIN_SHUTDOWN: last = VIR_DOMAIN_SHUTDOWN_LAST; break;
> - case VIR_DOMAIN_SHUTOFF: last = VIR_DOMAIN_SHUTOFF_LAST; break;
> - case VIR_DOMAIN_CRASHED: last = VIR_DOMAIN_CRASHED_LAST; break;
> - default: last = -1;
> + case VIR_DOMAIN_NOSTATE:
> + last = VIR_DOMAIN_NOSTATE_LAST;
> + break;
> + case VIR_DOMAIN_RUNNING:
> + last = VIR_DOMAIN_RUNNING_LAST;
> + break;
> + case VIR_DOMAIN_BLOCKED:
> + last = VIR_DOMAIN_BLOCKED_LAST;
> + break;
> + case VIR_DOMAIN_PAUSED:
> + last = VIR_DOMAIN_PAUSED_LAST;
> + break;
> + case VIR_DOMAIN_SHUTDOWN:
> + last = VIR_DOMAIN_SHUTDOWN_LAST;
> + break;
> + case VIR_DOMAIN_SHUTOFF:
> + last = VIR_DOMAIN_SHUTOFF_LAST;
> + break;
> + case VIR_DOMAIN_CRASHED:
> + last = VIR_DOMAIN_CRASHED_LAST;
> + break;
> + case VIR_DOMAIN_PMSUSPENDED:
> + last = VIR_DOMAIN_PMSUSPENDED_LAST;
> + break;
> + default:
> + last = -1;
> }
>
> if (last < 0) {
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 630b77f..7ef9807 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -18817,6 +18817,8 @@ vshDomainStateToString(int state)
> return N_("shut off");
> case VIR_DOMAIN_CRASHED:
> return N_("crashed");
> + case VIR_DOMAIN_PMSUSPENDED:
> + return N_("pmsuspended");
> case VIR_DOMAIN_NOSTATE:
> default:
> ;/*FALLTHROUGH*/
> @@ -18930,6 +18932,14 @@ vshDomainStateReasonToString(int state, int reason)
> }
> break;
>
> + case VIR_DOMAIN_PMSUSPENDED:
> + switch ((virDomainPMSuspendedReason) reason) {
> + case VIR_DOMAIN_PMSUSPENDED_UNKNOWN:
> + case VIR_DOMAIN_PMSUSPENDED_LAST:
> + ;
> + }
> + break;
> +
> case VIR_DOMAIN_LAST:
> ;
> }
> diff --git a/tools/virsh.pod b/tools/virsh.pod
> index 64b00ee..88d04a5 100644
> --- a/tools/virsh.pod
> +++ b/tools/virsh.pod
> @@ -327,7 +327,7 @@ State is the run state (see below).
>
> B<STATES>
>
> -The State field lists 7 states for a domain, and which ones the
> +The State field lists 8 states for a domain, and which ones the
> current domain is in.
>
> =over 4
> @@ -371,6 +371,11 @@ restart on crash.
> The domain is in process of dying, but hasn't completely shutdown or
> crashed.
>
> +=item B<pmsuspended>
> +
> +The domain has been suspended by guest power management, e.g. entered
> +into s3 state.
> +
> =back
>
> If I<--managed-save> is specified, then domains that have managed save
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list