[libvirt] [PATCHv9.5 1/2] blockjob: add qemu capabilities related to block jobs

Peter Krempa pkrempa at redhat.com
Sat Oct 27 06:10:00 UTC 2012


On 10/27/12 01:00, Eric Blake wrote:
> Upstream qemu 1.3 is adding two new monitor commands, 'drive-mirror'
> and 'block-job-complete'[1], which can drive live block copy and
> storage migration.  [Additionally, RHEL 6.3 had backported an earlier
> version of most of the same functionality, but under the names
> '__com.redhat_drive-mirror' and '__com.redhat_drive-reopen' and with
> slightly different JSON arguments, and has been using patches similar
> to these upstream patches for several months now.]
>
> The libvirt API virDomainBlockRebase as already committed for 0.9.12
> is flexible enough to expose the basics of block copy, but some
> additional features in the 'drive-mirror' qemu command, such as
> setting error policy, setting granularity, or using a persistent
> bitmap, may later require a new libvirt API virDomainBlockCopy.  I
> will wait to add that API until we know more about what qemu 1.3
> will finally provide.
>
> This patch caters only to the upstream qemu 1.3 interface, although
> I have proven that the changes for RHEL 6.3 can be isolated to
> just qemu_monitor_json.c, and the rest of this series will
> gracefully handle either interface once the JSON differences are
> papered over in a downstream patch.
>
> For consistency with other block job commands, libvirt must handle
> the bandwidth argument as MiB/sec from the user, even though qemu
> exposes the speed argument as bytes/sec; then again, qemu rounds
> up to cluster size internally, so using MiB hides the worst effects
> of that rounding if you pass small numbers.
>
> [1]https://lists.gnu.org/archive/html/qemu-devel/2012-10/msg04123.html
>
> * src/qemu/qemu_capabilities.h (QEMU_CAPS_DRIVE_MIRROR)
> (QEMU_CAPS_DRIVE_REOPEN): New bits.
> * src/qemu/qemu_capabilities.c (qemuCaps): Name them.
> * src/qemu/qemu_monitor_json.c (qemuMonitorJSONCheckCommands): Set
> them.
> (qemuMonitorJSONDriveMirror, qemuMonitorDrivePivot): New functions.
> * src/qemu/qemu_monitor_json.h (qemuMonitorJSONDriveMirror)
> (qemuMonitorDrivePivot): Declare them.
> * src/qemu/qemu_monitor.c (qemuMonitorDriveMirror)
> (qemuMonitorDrivePivot): New passthroughs.
> * src/qemu/qemu_monitor.h (qemuMonitorDriveMirror)
> (qemuMonitorDrivePivot): Declare them.
> ---
>
> v9.5: Update the commit message to point to Kevin's PULL request
> (we're one step closer to having drive-mirror in upstream qemu.git,
> and a PULL request means the interface is now stable).  Drop
> consideration for RHEL 6.3, by dropping the 'bool reopen' parameter;
> later patches in the series will trivially rebase that part out.
>
>   src/qemu/qemu_capabilities.c |  4 +++
>   src/qemu/qemu_capabilities.h |  1 +
>   src/qemu/qemu_monitor.c      | 56 +++++++++++++++++++++++++++++++++++++++--
>   src/qemu/qemu_monitor.h      | 12 +++++++++
>   src/qemu/qemu_monitor_json.c | 60 ++++++++++++++++++++++++++++++++++++++++++++
>   src/qemu/qemu_monitor_json.h | 19 ++++++++++++--
>   6 files changed, 148 insertions(+), 4 deletions(-)
>

ACK.

Peter




More information about the libvir-list mailing list