提交 dda95b53 编写于 作者: P Peter Krempa

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.
上级 ac3ed208
...@@ -2451,47 +2451,19 @@ vshDomainBlockJobToString(int type) ...@@ -2451,47 +2451,19 @@ vshDomainBlockJobToString(int type)
return str ? _(str) : _("Unknown job"); return str ? _(str) : _("Unknown job");
} }
static bool static bool
cmdBlockJob(vshControl *ctl, const vshCmd *cmd) vshBlockJobInfo(vshControl *ctl,
virDomainPtr dom,
const char *path,
bool raw,
bool bytes)
{ {
virDomainBlockJobInfo info; virDomainBlockJobInfo info;
unsigned long long speed;
unsigned int flags = 0;
bool ret = false; bool ret = false;
int rc = -1; 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;
/* If bytes were requested, or if raw mode is not forcing a MiB/s /* 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. */ * query and cache can't prove failure, then query bytes/sec. */
...@@ -2556,7 +2528,54 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd) ...@@ -2556,7 +2528,54 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd)
} }
vshPrint(ctl, "\n"); vshPrint(ctl, "\n");
} }
ret = true; 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: cleanup:
if (dom) if (dom)
virDomainFree(dom); virDomainFree(dom);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册