]> git.proxmox.com Git - mirror_qemu.git/blobdiff - blockdev.c
qmp: add block_job_set_speed command
[mirror_qemu.git] / blockdev.c
index 06f179ef877b2ccc66028ff085446ee2bebe3fd7..4c8fcdd31e36308a4039370f0b507cf57007be75 100644 (file)
@@ -964,3 +964,28 @@ void qmp_block_stream(const char *device, bool has_base,
 
     trace_qmp_block_stream(bs, bs->job);
 }
+
+static BlockJob *find_block_job(const char *device)
+{
+    BlockDriverState *bs;
+
+    bs = bdrv_find(device);
+    if (!bs || !bs->job) {
+        return NULL;
+    }
+    return bs->job;
+}
+
+void qmp_block_job_set_speed(const char *device, int64_t value, Error **errp)
+{
+    BlockJob *job = find_block_job(device);
+
+    if (!job) {
+        error_set(errp, QERR_DEVICE_NOT_ACTIVE, device);
+        return;
+    }
+
+    if (block_job_set_speed(job, value) < 0) {
+        error_set(errp, QERR_NOT_SUPPORTED);
+    }
+}