The libvirt BlockPull API supports the use of an initial bandwidth limit but the
qemu block_stream API does not. To get the desired behavior we use the two APIs
strung together: first BlockPull, then BlockJobSetSpeed. We can do this at the
driver level to avoid duplicated code in each monitor path.
Signed-off-by: Adam Litke <agl(a)us.ibm.com>
---
src/qemu/qemu_driver.c | 8 +++++++-
src/qemu/qemu_monitor_json.c | 4 ----
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 4e8c691..7476bb4 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -9418,8 +9418,14 @@ static int
qemuDomainBlockPull(virDomainPtr dom, const char *path, unsigned long bandwidth,
unsigned int flags)
{
+ int ret;
+
virCheckFlags(0, -1);
- return qemuDomainBlockJobImpl(dom, path, bandwidth, NULL, BLOCK_JOB_PULL);
+ ret = qemuDomainBlockJobImpl(dom, path, bandwidth, NULL, BLOCK_JOB_PULL);
+ if (ret == 0 && bandwidth != 0)
+ ret = qemuDomainBlockJobImpl(dom, path, bandwidth, NULL,
+ BLOCK_JOB_SPEED);
+ return ret;
}
static virDriver qemuDriver = {
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 715b26e..4ceb536 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -2956,10 +2956,6 @@ int qemuMonitorJSONBlockJob(qemuMonitorPtr mon,
if (ret == 0 && mode == BLOCK_JOB_INFO)
ret = qemuMonitorJSONGetBlockJobInfo(reply, device, info);
- if (ret == 0 && mode == BLOCK_JOB_PULL && bandwidth != 0)
- ret = qemuMonitorJSONBlockJob(mon, device, bandwidth, NULL,
- BLOCK_JOB_SPEED);
-
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;
--
1.7.3
Show replies by date
On 09/01/2011 04:35 PM, Adam Litke wrote:
The libvirt BlockPull API supports the use of an initial bandwidth
limit but the
qemu block_stream API does not. To get the desired behavior we use the two APIs
strung together: first BlockPull, then BlockJobSetSpeed. We can do this at the
driver level to avoid duplicated code in each monitor path.
Signed-off-by: Adam Litke<agl(a)us.ibm.com>
---
src/qemu/qemu_driver.c | 8 +++++++-
src/qemu/qemu_monitor_json.c | 4 ----
2 files changed, 7 insertions(+), 5 deletions(-)
ACK and pushed.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org