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