On 04/19/2012 03:00 PM, Jiri Denemark wrote:
On Mon, Apr 16, 2012 at 23:06:03 -0600, Eric Blake wrote:
> In qemu, it is possible to call 'migrate_set_speed' prior to
> 'migrate', and therefore ensure a constant throttling through the
> entire migration. However, this is not possible with
> 'block-job-set-speed', which fails if a job is not already active.
> This means that you can't detect a device that doesn't support
> throttling until after you have already started a block job and
> let an unknown amount of unthrottled data through. Aborting the
> job upon failure to set the speed seems a bit harsh, since it
> would have been nicer to prevent the job from starting in the
> first place, rather than letting an unknown amount of data be
> processed before detecting the speed failure. So I propose
> relaxing the documentation, and explicitly mentioning that setting
> the speed is a best-effort attempt that might be ignored. On the
> other hand, I've also requested that qemu consider adding an
> optional parameter to allow setting the speed at the creation of a
> block job.
>
> * src/libvirt.c (virDomainBlockPull, virDomainBlockRebase): Update
> the documentation.
> * src/qemu/qemu_driver.c (qemuDomainBlockJobImpl)
> (qemuDomainBlockCopy): Log but don't fail when speed change fails.
> ---
>
> v5: new patch; see also this qemu request:
>
https://lists.gnu.org/archive/html/qemu-devel/2012-04/msg02185.html
>
> src/libvirt.c | 12 ++++++++++--
> src/qemu/qemu_driver.c | 18 ++++++++++++------
> 2 files changed, 22 insertions(+), 8 deletions(-)
OK
I'm hoping to actually drop this patch, and replace it with an
alternative that calls set-block-job-speed _before_ block-stream or
drive-mirror; but that depends on someone actually writing the qemu
patch outlined in the thread here:
https://lists.gnu.org/archive/html/qemu-devel/2012-04/msg02273.html
At any rate, this serves as a good argument for why the qemu side of
this patch series isn't quite ready to push to upstream libvirt yet.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org