From 4568fef30e457281bac396427a17d72218cc39c3 Mon Sep 17 00:00:00 2001 From: Lai Jiangshan Date: Tue, 27 Dec 2011 15:36:37 +0800 Subject: [PATCH] kvm tools: Check the state before pause/resume Let the user know what happened Signed-off-by: Lai Jiangshan Signed-off-by: Pekka Enberg --- 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 deletion(-) diff --git a/tools/kvm/builtin-list.c b/tools/kvm/builtin-list.c index dbd6d98f3290..885543f440ce 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 436963f3e87b..c08595a304d1 100644 --- a/tools/kvm/builtin-pause.c +++ b/tools/kvm/builtin-pause.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -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 033a05b7d0a3..0e954b405ee8 100644 --- a/tools/kvm/builtin-resume.c +++ b/tools/kvm/builtin-resume.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -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 7b697f69ee24..47029caa25e6 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 -- 2.39.5