On Fri, Aug 06, 2021 at 11:38:56AM +0200, Max Reitz wrote: > We must check whether the job is force-cancelled early in our main loop, > most importantly before any `continue` statement. For example, we used > to have `continue`s before our current checking location that are > triggered by `mirror_flush()` failing. So, if `mirror_flush()` kept > failing, force-cancelling the job would not terminate it. > > Jobs can be cancelled while they yield, and once they are > (force-cancelled), they should not generate new I/O requests. > Therefore, we should put the check after the last yield before > mirror_iteration() is invoked. > > Buglink: https://gitlab.com/qemu-project/qemu/-/issues/462 > Signed-off-by: Max Reitz <mre...@redhat.com> > --- > block/mirror.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-)
Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org