On 08/31/14 06:02, Eric Blake wrote: > While reviewing the new virDomainBlockCopy API, Peter Krempa > pointed out that our existing design of using MiB/s for block > job bandwidth is rather coarse, especially since qemu tracks > it in bytes/s; so virDomainBlockCopy only accepts bytes/s. > But once the new API is implemented for qemu, we will be in > the situation where it is possible to set a value that cannot > be accurately reflected back to the user, because the existing > virDomainGetBlockJobInfo defaults to the coarser units. > > Fortunately, we have an escape hatch; and one that has already > served us well in the past: we can use the flags argument to > specify which scale to use (see virDomainBlockResize for prior > art). This patch fixes the query side of the API; made easier > by previous patches that split the query side out from the > modification code. Later patches will address the virsh > interface, as well retrofitting all other blockjob APIs to > also accept a flag for toggling bandwidth units. > > * include/libvirt/libvirt.h.in (_virDomainBlockJobInfo) > (VIR_DOMAIN_BLOCK_COPY_BANDWIDTH): Document sizing issues. > (virDomainBlockJobInfoFlags): New enum. > * src/libvirt.c (virDomainGetBlockJobInfo): Document new flag. > * src/qemu/qemu_monitor.h (qemuMonitorBlockJobInfo): Add parameter. > * src/qemu/qemu_monitor.c (qemuMonitorBlockJobInfo): Likewise. > * src/qemu/qemu_monitor_json.h (qemuMonitorJSONBlockJobInfo): > Likewise. > * src/qemu/qemu_monitor_json.c (qemuMonitorJSONBlockJobInfo) > (qemuMonitorJSONGetBlockJobInfoOne): Likewise. Don't scale here. > * src/qemu/qemu_migration.c (qemuMigrationDriveMirror): Update > callers. > * src/qemu/qemu_driver.c (qemuDomainBlockPivot) > (qemuDomainBlockJobImpl): Likewise. > (qemuDomainGetBlockJobInfo): Likewise, and support new flag. > > Signed-off-by: Eric Blake <eblake@xxxxxxxxxx> > --- > include/libvirt/libvirt.h.in | 38 +++++++++++++++++++++++++------------- > src/libvirt.c | 8 ++++++-- > src/qemu/qemu_driver.c | 20 ++++++++++++++++---- > src/qemu/qemu_migration.c | 3 ++- > src/qemu/qemu_monitor.c | 8 +++++--- > src/qemu/qemu_monitor.h | 3 ++- > src/qemu/qemu_monitor_json.c | 19 ++++++++++++------- > src/qemu/qemu_monitor_json.h | 3 ++- > 8 files changed, 70 insertions(+), 32 deletions(-) > ACK. I presume virsh will be modified later in the series. Peter
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list