[tip:tools/kvm] kvm tools: Check the state before pause/resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit-ID:  4568fef30e457281bac396427a17d72218cc39c3
Gitweb:     http://git.kernel.org/tip/4568fef30e457281bac396427a17d72218cc39c3
Author:     Lai Jiangshan <laijs@xxxxxxxxxxxxxx>
AuthorDate: Tue, 27 Dec 2011 15:36:37 +0800
Committer:  Pekka Enberg <penberg@xxxxxxxxxx>
CommitDate: Tue, 3 Jan 2012 19:07:01 +0200

kvm tools: Check the state before pause/resume

Let the user know what happened

Signed-off-by: Lai Jiangshan <laijs@xxxxxxxxxxxxxx>
Signed-off-by: Pekka Enberg <penberg@xxxxxxxxxx>
---
 tools/kvm/builtin-list.c             |    2 +-
 tools/kvm/builtin-pause.c            |   10 ++++++++++
 tools/kvm/builtin-resume.c           |   10 ++++++++++
 tools/kvm/include/kvm/builtin-list.h |    1 +
 4 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/tools/kvm/builtin-list.c b/tools/kvm/builtin-list.c
index dbd6d98..885543f 100644
--- a/tools/kvm/builtin-list.c
+++ b/tools/kvm/builtin-list.c
@@ -51,7 +51,7 @@ static pid_t get_pid(int sock)
 	return pid;
 }
 
-static int get_vmstate(int sock)
+int get_vmstate(int sock)
 {
 	int vmstate;
 	int r;
diff --git a/tools/kvm/builtin-pause.c b/tools/kvm/builtin-pause.c
index 436963f..c08595a 100644
--- a/tools/kvm/builtin-pause.c
+++ b/tools/kvm/builtin-pause.c
@@ -1,6 +1,7 @@
 #include <kvm/util.h>
 #include <kvm/kvm-cmd.h>
 #include <kvm/builtin-pause.h>
+#include <kvm/builtin-list.h>
 #include <kvm/kvm.h>
 #include <kvm/parse-options.h>
 #include <kvm/kvm-ipc.h>
@@ -42,6 +43,15 @@ void kvm_pause_help(void)
 static int do_pause(const char *name, int sock)
 {
 	int r;
+	int vmstate;
+
+	vmstate = get_vmstate(sock);
+	if (vmstate < 0)
+		return vmstate;
+	if (vmstate == KVM_VMSTATE_PAUSED) {
+		printf("Guest %s is already paused.\n", name);
+		return 0;
+	}
 
 	r = kvm_ipc__send(sock, KVM_IPC_PAUSE);
 	if (r)
diff --git a/tools/kvm/builtin-resume.c b/tools/kvm/builtin-resume.c
index 033a05b..0e954b4 100644
--- a/tools/kvm/builtin-resume.c
+++ b/tools/kvm/builtin-resume.c
@@ -1,6 +1,7 @@
 #include <kvm/util.h>
 #include <kvm/kvm-cmd.h>
 #include <kvm/builtin-resume.h>
+#include <kvm/builtin-list.h>
 #include <kvm/kvm.h>
 #include <kvm/parse-options.h>
 #include <kvm/kvm-ipc.h>
@@ -42,6 +43,15 @@ void kvm_resume_help(void)
 static int do_resume(const char *name, int sock)
 {
 	int r;
+	int vmstate;
+
+	vmstate = get_vmstate(sock);
+	if (vmstate < 0)
+		return vmstate;
+	if (vmstate == KVM_VMSTATE_RUNNING) {
+		printf("Guest %s is still running.\n", name);
+		return 0;
+	}
 
 	r = kvm_ipc__send(sock, KVM_IPC_RESUME);
 	if (r)
diff --git a/tools/kvm/include/kvm/builtin-list.h b/tools/kvm/include/kvm/builtin-list.h
index 7b697f6..47029ca 100644
--- a/tools/kvm/include/kvm/builtin-list.h
+++ b/tools/kvm/include/kvm/builtin-list.h
@@ -5,5 +5,6 @@
 
 int kvm_cmd_list(int argc, const char **argv, const char *prefix);
 void kvm_list_help(void) NORETURN;
+int get_vmstate(int sock);
 
 #endif
--
To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Stable Commits]     [Linux Stable Kernel]     [Linux Kernel]     [Linux USB Devel]     [Linux Video &Media]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux