Add a simple wrapper which will allow to set the threshold for delivering the event. --- tools/virsh-domain.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/virsh.pod | 8 +++++++ 2 files changed, 71 insertions(+) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index ee702f3c4..f70f61b72 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -7097,6 +7097,63 @@ cmdSetvcpu(vshControl *ctl, const vshCmd *cmd) /* + * "blockthreshold" command + */ +static const vshCmdInfo info_blockthreshold[] = { + {.name = "help", + .data = N_("attach/detach vcpu or groups of threads") + }, + {.name = "desc", + .data = N_("Add or remove vcpus") + }, + {.name = NULL} +}; + +static const vshCmdOptDef opts_blockthreshold[] = { + 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 +cmdBlockThreshold(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 */ static const vshCmdInfo info_iothreadinfo[] = { @@ -14060,5 +14117,11 @@ const vshCmdDef domManagementCmds[] = { .info = info_setvcpu, .flags = 0 }, + {.name = "blockthreshold", + .handler = cmdBlockThreshold, + .opts = opts_blockthreshold, + .info = info_blockthreshold, + .flags = 0 + }, {.name = NULL} }; diff --git a/tools/virsh.pod b/tools/virsh.pod index 6c06ee029..102aefc0c 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -1265,6 +1265,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<blockthreshold> 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> -- 2.11.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list