On 05/30/2014 02:37 AM, Peter Krempa wrote:
To allow changing the name that is recorded in the top of the
current
image chain used in a block pull/rebase operation, we need to specify
the backing name to qemu. This is done via the "backing-file" attribute
to the block-stream commad.
s/commad/command/
---
src/qemu/qemu_driver.c | 8 ++++----
src/qemu/qemu_migration.c | 6 +++---
src/qemu/qemu_monitor.c | 12 +++++++-----
src/qemu/qemu_monitor.h | 3 ++-
src/qemu/qemu_monitor_json.c | 15 +++++++++++++++
src/qemu/qemu_monitor_json.h | 1 +
6 files changed, 32 insertions(+), 13 deletions(-)
Again, I think the qemu_capability.[ch] change is needed as a separate
commit; but you can get away with the same capability for both
block-commit and block-pull since both commands are learning the feature
in the same qemu series. Not sure if the capability needs to come
first, or if you have it later in the series.
This patch is okay (although this and 30/36 should probably wait until
Jeff's series is actually committed into qemu.git).
@@ -3759,6 +3759,7 @@ int
qemuMonitorJSONBlockJob(qemuMonitorPtr mon,
+
+ if (backingName && mode != BLOCK_JOB_PULL) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("backing name is supported only for block pull"));
+ return -1;
+ }
[side note - I honestly don't know why we tried to cram so much into
qemuMonitorJSONBlockJob through the entire stack; it might have been
simpler to have one qemu_monitor.h entry point per QMP command, rather
than trying to multiplex. But it may not be worth the refactor now]
If these were separate functions instead of multiplexed through a mode
argument, then you wouldn't need a check like this (since the check will
never fail unless we introduce a bug in qemu_driver.c).
ACK
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org