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

[libvirt] [PATCH 1/8] virsh: blockjob: Extract block job info code into a separate function



cmdBlockJob will be converted to a hub that will call into the
individual executor functions.
---
 tools/virsh-domain.c | 93 +++++++++++++++++++++++++++++++---------------------
 1 file changed, 56 insertions(+), 37 deletions(-)

diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 4b627e1..01c6b9e 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -2457,47 +2457,19 @@ vshDomainBlockJobToString(int type)
     return str ? _(str) : _("Unknown job");
 }

+
 static bool
-cmdBlockJob(vshControl *ctl, const vshCmd *cmd)
+vshBlockJobInfo(vshControl *ctl,
+                virDomainPtr dom,
+                const char *path,
+                bool raw,
+                bool bytes)
 {
     virDomainBlockJobInfo info;
-    bool ret = false;
-    int rc = -1;
-    bool raw = vshCommandOptBool(cmd, "raw");
-    bool bytes = vshCommandOptBool(cmd, "bytes");
-    bool abortMode = (vshCommandOptBool(cmd, "abort") ||
-                      vshCommandOptBool(cmd, "async") ||
-                      vshCommandOptBool(cmd, "pivot"));
-    bool infoMode = vshCommandOptBool(cmd, "info") || raw;
-    bool bandwidth = vshCommandOptBool(cmd, "bandwidth");
-    virDomainPtr dom = NULL;
-    const char *path;
-    unsigned int flags = 0;
     unsigned long long speed;
-
-    if (abortMode + infoMode + bandwidth > 1) {
-        vshError(ctl, "%s",
-                 _("conflict between abort, info, and bandwidth modes"));
-        return false;
-    }
-    /* XXX also support --bytes with bandwidth mode */
-    if (bytes && (abortMode || bandwidth)) {
-        vshError(ctl, "%s", _("--bytes requires info mode"));
-        return false;
-    }
-
-    if (abortMode)
-        return blockJobImpl(ctl, cmd, VSH_CMD_BLOCK_JOB_ABORT, NULL);
-    if (bandwidth)
-        return blockJobImpl(ctl, cmd, VSH_CMD_BLOCK_JOB_SPEED, NULL);
-
-    /* Everything below here is for --info mode */
-    if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
-        goto cleanup;
-
-    /* XXX Allow path to be optional to list info on all devices at once */
-    if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
-        goto cleanup;
+    unsigned int flags = 0;
+    bool ret = false;
+    int rc;

     /* If bytes were requested, or if raw mode is not forcing a MiB/s
      * query and cache can't prove failure, then query bytes/sec.  */
@@ -2562,7 +2534,54 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd)
         }
         vshPrint(ctl, "\n");
     }
+
     ret = true;
+
+ cleanup:
+    return ret;
+}
+
+
+static bool
+cmdBlockJob(vshControl *ctl, const vshCmd *cmd)
+{
+    bool ret = false;
+    bool raw = vshCommandOptBool(cmd, "raw");
+    bool bytes = vshCommandOptBool(cmd, "bytes");
+    bool abortMode = (vshCommandOptBool(cmd, "abort") ||
+                      vshCommandOptBool(cmd, "async") ||
+                      vshCommandOptBool(cmd, "pivot"));
+    bool infoMode = vshCommandOptBool(cmd, "info") || raw;
+    bool bandwidth = vshCommandOptBool(cmd, "bandwidth");
+    virDomainPtr dom = NULL;
+    const char *path;
+
+    if (abortMode + infoMode + bandwidth > 1) {
+        vshError(ctl, "%s",
+                 _("conflict between abort, info, and bandwidth modes"));
+        return false;
+    }
+    /* XXX also support --bytes with bandwidth mode */
+    if (bytes && (abortMode || bandwidth)) {
+        vshError(ctl, "%s", _("--bytes requires info mode"));
+        return false;
+    }
+
+    if (abortMode)
+        return blockJobImpl(ctl, cmd, VSH_CMD_BLOCK_JOB_ABORT, NULL);
+    if (bandwidth)
+        return blockJobImpl(ctl, cmd, VSH_CMD_BLOCK_JOB_SPEED, NULL);
+
+    /* Everything below here is for --info mode */
+    if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
+        goto cleanup;
+
+    /* XXX Allow path to be optional to list info on all devices at once */
+    if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
+        goto cleanup;
+
+    ret = vshBlockJobInfo(ctl, dom, path, raw, bytes);
+
  cleanup:
     if (dom)
         virDomainFree(dom);
-- 
2.3.5


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