From: "Daniel P. Berrange" <berrange(a)redhat.com>
hostPMFeatures is a bitmask, but the VIR_NODE_SUSPEND_TARGET
constants are from an enum. Thus the code was checking the
wrong bit values
* src/util/virnodesuspend.c: Fix suspend target checks
---
src/util/virnodesuspend.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/util/virnodesuspend.c b/src/util/virnodesuspend.c
index 4ac0d45..4eb5439 100644
--- a/src/util/virnodesuspend.c
+++ b/src/util/virnodesuspend.c
@@ -213,7 +213,7 @@ int nodeSuspendForDuration(virConnectPtr conn ATTRIBUTE_UNUSED,
/* Check if the host supports the requested suspend target */
switch (target) {
case VIR_NODE_SUSPEND_TARGET_MEM:
- if (hostPMFeatures & VIR_NODE_SUSPEND_TARGET_MEM) {
+ if (hostPMFeatures & (1 << VIR_NODE_SUSPEND_TARGET_MEM)) {
cmdString = strdup("pm-suspend");
if (cmdString == NULL) {
virReportOOMError();
@@ -225,7 +225,7 @@ int nodeSuspendForDuration(virConnectPtr conn ATTRIBUTE_UNUSED,
goto cleanup;
case VIR_NODE_SUSPEND_TARGET_DISK:
- if (hostPMFeatures & VIR_NODE_SUSPEND_TARGET_DISK) {
+ if (hostPMFeatures & (1 << VIR_NODE_SUSPEND_TARGET_DISK)) {
cmdString = strdup("pm-hibernate");
if (cmdString == NULL) {
virReportOOMError();
@@ -237,7 +237,7 @@ int nodeSuspendForDuration(virConnectPtr conn ATTRIBUTE_UNUSED,
goto cleanup;
case VIR_NODE_SUSPEND_TARGET_HYBRID:
- if (hostPMFeatures & VIR_NODE_SUSPEND_TARGET_HYBRID) {
+ if (hostPMFeatures & (1 << VIR_NODE_SUSPEND_TARGET_HYBRID)) {
cmdString = strdup("pm-suspend-hybrid");
if (cmdString == NULL) {
virReportOOMError();
--
1.7.6.4