render / rpms / libvirt

Forked from rpms/libvirt 9 months ago
Clone
7a3408
From 2fff3bf5d38ae5d1e954c5f5a9b8d3e840283ce2 Mon Sep 17 00:00:00 2001
7a3408
Message-Id: <2fff3bf5d38ae5d1e954c5f5a9b8d3e840283ce2@dist-git>
7a3408
From: Peter Krempa <pkrempa@redhat.com>
7a3408
Date: Tue, 21 Jul 2015 16:18:28 +0200
7a3408
Subject: [PATCH] virsh: Kill blockJobImpl by moving the final impl into
7a3408
 cmdBlockCommit
7a3408
7a3408
https://bugzilla.redhat.com/show_bug.cgi?id=1227551
7a3408
https://bugzilla.redhat.com/show_bug.cgi?id=1197592
7a3408
7a3408
Final cleanup to get rid of the hub function.
7a3408
7a3408
(cherry picked from commit 5dceea2c95b341c192b9f4940308af3710c309f0)
7a3408
7a3408
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
7a3408
---
7a3408
 tools/virsh-domain.c | 92 +++++++++++++++++++---------------------------------
7a3408
 1 file changed, 33 insertions(+), 59 deletions(-)
7a3408
7a3408
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
7a3408
index aac9bb8..91b0b12 100644
7a3408
--- a/tools/virsh-domain.c
7a3408
+++ b/tools/virsh-domain.c
7a3408
@@ -1664,60 +1664,6 @@ cmdBlkiotune(vshControl * ctl, const vshCmd * cmd)
7a3408
     goto cleanup;
7a3408
 }
7a3408
 
7a3408
-typedef enum {
7a3408
-    VSH_CMD_BLOCK_JOB_COMMIT,
7a3408
-} vshCmdBlockJobMode;
7a3408
-
7a3408
-static bool
7a3408
-blockJobImpl(vshControl *ctl, const vshCmd *cmd,
7a3408
-             vshCmdBlockJobMode mode, virDomainPtr *pdom)
7a3408
-{
7a3408
-    virDomainPtr dom = NULL;
7a3408
-    const char *path;
7a3408
-    unsigned long bandwidth = 0;
7a3408
-    bool ret = false;
7a3408
-    const char *base = NULL;
7a3408
-    const char *top = NULL;
7a3408
-    unsigned int flags = 0;
7a3408
-
7a3408
-    if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
7a3408
-        goto cleanup;
7a3408
-
7a3408
-    if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
7a3408
-        goto cleanup;
7a3408
-
7a3408
-    if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0)
7a3408
-        goto cleanup;
7a3408
-
7a3408
-    switch (mode) {
7a3408
-    case VSH_CMD_BLOCK_JOB_COMMIT:
7a3408
-        if (vshCommandOptStringReq(ctl, cmd, "base", &base) < 0 ||
7a3408
-            vshCommandOptStringReq(ctl, cmd, "top", &top) < 0)
7a3408
-            goto cleanup;
7a3408
-        if (vshCommandOptBool(cmd, "shallow"))
7a3408
-            flags |= VIR_DOMAIN_BLOCK_COMMIT_SHALLOW;
7a3408
-        if (vshCommandOptBool(cmd, "delete"))
7a3408
-            flags |= VIR_DOMAIN_BLOCK_COMMIT_DELETE;
7a3408
-        if (vshCommandOptBool(cmd, "active") ||
7a3408
-            vshCommandOptBool(cmd, "pivot") ||
7a3408
-            vshCommandOptBool(cmd, "keep-overlay"))
7a3408
-            flags |= VIR_DOMAIN_BLOCK_COMMIT_ACTIVE;
7a3408
-        if (vshCommandOptBool(cmd, "keep-relative"))
7a3408
-            flags |= VIR_DOMAIN_BLOCK_COMMIT_RELATIVE;
7a3408
-        if (virDomainBlockCommit(dom, path, base, top, bandwidth, flags) < 0)
7a3408
-            goto cleanup;
7a3408
-        break;
7a3408
-    }
7a3408
-
7a3408
-    ret = true;
7a3408
-
7a3408
- cleanup:
7a3408
-    if (pdom && ret)
7a3408
-        *pdom = dom;
7a3408
-    else if (dom)
7a3408
-        virDomainFree(dom);
7a3408
-    return ret;
7a3408
-}
7a3408
 
7a3408
 static void
7a3408
 vshPrintJobProgress(const char *label, unsigned long long remaining,
7a3408
@@ -1864,10 +1810,38 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd)
7a3408
     struct timeval start;
7a3408
     struct timeval curr;
7a3408
     const char *path = NULL;
7a3408
+    const char *base = NULL;
7a3408
+    const char *top = NULL;
7a3408
     bool quit = false;
7a3408
     int abort_flags = 0;
7a3408
     int status = -1;
7a3408
     int cb_id = -1;
7a3408
+    unsigned int flags = 0;
7a3408
+    unsigned long bandwidth = 0;
7a3408
+
7a3408
+    if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
7a3408
+        return false;
7a3408
+
7a3408
+    if (vshCommandOptStringReq(ctl, cmd, "base", &base) < 0)
7a3408
+        return false;
7a3408
+
7a3408
+    if (vshCommandOptStringReq(ctl, cmd, "top", &top) < 0)
7a3408
+        return false;
7a3408
+
7a3408
+    if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0)
7a3408
+        return false;
7a3408
+
7a3408
+    if (vshCommandOptBool(cmd, "shallow"))
7a3408
+        flags |= VIR_DOMAIN_BLOCK_COMMIT_SHALLOW;
7a3408
+
7a3408
+    if (vshCommandOptBool(cmd, "delete"))
7a3408
+        flags |= VIR_DOMAIN_BLOCK_COMMIT_DELETE;
7a3408
+
7a3408
+    if (active)
7a3408
+        flags |= VIR_DOMAIN_BLOCK_COMMIT_ACTIVE;
7a3408
+
7a3408
+   if (vshCommandOptBool(cmd, "keep-relative"))
7a3408
+        flags |= VIR_DOMAIN_BLOCK_COMMIT_RELATIVE;
7a3408
 
7a3408
     blocking |= vshCommandOptBool(cmd, "timeout") || pivot || finish;
7a3408
     if (blocking) {
7a3408
@@ -1877,8 +1851,6 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd)
7a3408
         }
7a3408
         if (vshCommandOptTimeoutToMs(ctl, cmd, &timeout) < 0)
7a3408
             return false;
7a3408
-        if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
7a3408
-            return false;
7a3408
         if (vshCommandOptBool(cmd, "async"))
7a3408
             abort_flags |= VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC;
7a3408
 
7a3408
@@ -1897,6 +1869,9 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd)
7a3408
         return false;
7a3408
     }
7a3408
 
7a3408
+    if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
7a3408
+        return false;
7a3408
+
7a3408
     virConnectDomainEventGenericCallback cb =
7a3408
         VIR_DOMAIN_EVENT_CALLBACK(vshBlockJobStatusHandler);
7a3408
 
7a3408
@@ -1908,7 +1883,7 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd)
7a3408
                                                   NULL)) < 0)
7a3408
         vshResetLibvirtError();
7a3408
 
7a3408
-    if (!blockJobImpl(ctl, cmd, VSH_CMD_BLOCK_JOB_COMMIT, &dom))
7a3408
+    if (virDomainBlockCommit(dom, path, base, top, bandwidth, flags) < 0)
7a3408
         goto cleanup;
7a3408
 
7a3408
     if (!blocking) {
7a3408
@@ -1990,8 +1965,7 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd)
7a3408
 
7a3408
     ret = true;
7a3408
  cleanup:
7a3408
-    if (dom)
7a3408
-        virDomainFree(dom);
7a3408
+    virDomainFree(dom);
7a3408
     if (blocking)
7a3408
         sigaction(SIGINT, &old_sig_action, NULL);
7a3408
     if (cb_id >= 0)
7a3408
-- 
7a3408
2.5.0
7a3408