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

virsh: blockjob: Support --bytes and scaled integers as bandwidth

Use vshBlockJobOptionBandwidth to parse the bandwidth value which will
allow users to specify bandwidth in bytes or as a scaled integer.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1288000
上级 d18e78c2
...@@ -2492,7 +2492,7 @@ static const vshCmdOptDef opts_block_job[] = { ...@@ -2492,7 +2492,7 @@ static const vshCmdOptDef opts_block_job[] = {
}, },
{.name = "bytes", {.name = "bytes",
.type = VSH_OT_BOOL, .type = VSH_OT_BOOL,
.help = N_("with --info, get bandwidth in bytes rather than MiB/s") .help = N_("get/set bandwidth in bytes rather than MiB/s")
}, },
{.name = "raw", {.name = "raw",
.type = VSH_OT_BOOL, .type = VSH_OT_BOOL,
...@@ -2611,14 +2611,19 @@ static bool ...@@ -2611,14 +2611,19 @@ static bool
virshBlockJobSetSpeed(vshControl *ctl, virshBlockJobSetSpeed(vshControl *ctl,
const vshCmd *cmd, const vshCmd *cmd,
virDomainPtr dom, virDomainPtr dom,
const char *path) const char *path,
bool bytes)
{ {
unsigned long bandwidth; unsigned long bandwidth;
unsigned int flags = 0;
if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0) if (bytes)
flags |= VIR_DOMAIN_BLOCK_JOB_SPEED_BANDWIDTH_BYTES;
if (vshBlockJobOptionBandwidth(ctl, cmd, bytes, &bandwidth) < 0)
return false; return false;
if (virDomainBlockJobSetSpeed(dom, path, bandwidth, 0) < 0) if (virDomainBlockJobSetSpeed(dom, path, bandwidth, flags) < 0)
return false; return false;
return true; return true;
...@@ -2672,8 +2677,6 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd) ...@@ -2672,8 +2677,6 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd)
VSH_EXCLUSIVE_OPTIONS("bytes", "abort"); VSH_EXCLUSIVE_OPTIONS("bytes", "abort");
VSH_EXCLUSIVE_OPTIONS_VAR(bytes, pivot); VSH_EXCLUSIVE_OPTIONS_VAR(bytes, pivot);
VSH_EXCLUSIVE_OPTIONS_VAR(bytes, async); VSH_EXCLUSIVE_OPTIONS_VAR(bytes, async);
/* XXX also support --bytes with bandwidth mode */
VSH_EXCLUSIVE_OPTIONS_VAR(bytes, bandwidth);
if (!(dom = virshCommandOptDomain(ctl, cmd, NULL))) if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
goto cleanup; goto cleanup;
...@@ -2683,7 +2686,7 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd) ...@@ -2683,7 +2686,7 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd)
goto cleanup; goto cleanup;
if (bandwidth) if (bandwidth)
ret = virshBlockJobSetSpeed(ctl, cmd, dom, path); ret = virshBlockJobSetSpeed(ctl, cmd, dom, path, bytes);
else if (abortMode || pivot || async) else if (abortMode || pivot || async)
ret = virshBlockJobAbort(dom, path, pivot, async); ret = virshBlockJobAbort(dom, path, pivot, async);
else else
......
...@@ -1155,10 +1155,15 @@ not supply bytes/s resolution; when omitting the flag, raw output is ...@@ -1155,10 +1155,15 @@ not supply bytes/s resolution; when omitting the flag, raw output is
listed in MiB/s and human-readable output automatically selects the listed in MiB/s and human-readable output automatically selects the
best resolution supported by the server. best resolution supported by the server.
I<bandwidth> can be used to set bandwidth limit for the active job. I<bandwidth> can be used to set bandwidth limit for the active job in MiB/s.
Specifying a negative value is interpreted as an unsigned long long If I<--bytes> is specified then the bandwidth value is interpreted in
bytes/s. Specifying a negative value is interpreted as an unsigned long
value or essentially unlimited. The hypervisor can choose whether to value or essentially unlimited. The hypervisor can choose whether to
reject the value or convert it to the maximum value allowed. reject the value or convert it to the maximum value allowed. Optionally a
scaled positive number may be used as bandwidth (see B<NOTES> above). Using
I<--bytes> with a scaled value allows to use finer granularity. A scaled value
used without I<--bytes> will be rounded down to MiB/s. Note that the
I<--bytes> may be unsupported by the hypervisor.
=item B<blockresize> I<domain> I<path> I<size> =item B<blockresize> I<domain> I<path> I<size>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册