virsh: Implement 'domblkthreshold' command to call virDomainSetBlockThreshold

Add a simple wrapper which will allow to set the threshold for
delivering the event.
This commit is contained in:
Peter Krempa 2017-02-23 13:27:18 +01:00
parent bb09798fbe
commit 97148962b5
2 changed files with 72 additions and 0 deletions

View File

@ -7096,6 +7096,64 @@ cmdSetvcpu(vshControl *ctl, const vshCmd *cmd)
}
/*
* "domblkthreshold" command
*/
static const vshCmdInfo info_domblkthreshold[] = {
{.name = "help",
.data = N_("set the threshold for block-threshold event for a given block "
"device or it's backing chain element")
},
{.name = "desc",
.data = N_("set threshold for block-threshold event for a block device")
},
{.name = NULL}
};
static const vshCmdOptDef opts_domblkthreshold[] = {
VIRSH_COMMON_OPT_DOMAIN_FULL,
{.name = "dev",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
.help = N_("device to set threshold for")
},
{.name = "threshold",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ,
.help = N_("threshold as a scaled number (by default bytes)")
},
{.name = NULL}
};
static bool
cmdDomblkthreshold(vshControl *ctl, const vshCmd *cmd)
{
unsigned long long threshold;
const char *dev = NULL;
virDomainPtr dom;
bool ret = false;
if (vshCommandOptStringReq(ctl, cmd, "dev", &dev))
return false;
if (vshCommandOptScaledInt(ctl, cmd, "threshold",
&threshold, 1, ULLONG_MAX) < 0)
return false;
if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
return false;
if (virDomainSetBlockThreshold(dom, dev, threshold, 0) < 0)
goto cleanup;
ret = true;
cleanup:
virDomainFree(dom);
return ret;
}
/*
* "iothreadinfo" command
*/
@ -14067,5 +14125,11 @@ const vshCmdDef domManagementCmds[] = {
.info = info_setvcpu,
.flags = 0
},
{.name = "domblkthreshold",
.handler = cmdDomblkthreshold,
.opts = opts_domblkthreshold,
.info = info_domblkthreshold,
.flags = 0
},
{.name = NULL}
};

View File

@ -1274,6 +1274,14 @@ 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<domblkthreshold> I<domain> I<dev> I<threshold>
Set the threshold value for delivering the block-threshold event. I<dev>
specifies the disk device target or backing chain element of given device using
the 'target[1]' syntax. I<threshold> is a scaled value of the offset. If the
block device should write beyond that offset the event will be delivered.
=item B<blockresize> I<domain> I<path> I<size>
Resize a block device of domain while the domain is running, I<path>