|
|
357786 |
From ec4901d603e9f29f9111933bb14d48653a1d67fa Mon Sep 17 00:00:00 2001
|
|
|
357786 |
From: Max Reitz <mreitz@redhat.com>
|
|
|
357786 |
Date: Mon, 18 Jun 2018 14:47:35 +0200
|
|
|
357786 |
Subject: [PATCH 25/54] block/mirror: Make cancel always cancel pre-READY
|
|
|
357786 |
|
|
|
357786 |
RH-Author: Max Reitz <mreitz@redhat.com>
|
|
|
357786 |
Message-id: <20180618144736.29873-3-mreitz@redhat.com>
|
|
|
357786 |
Patchwork-id: 80748
|
|
|
357786 |
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH 2/3] block/mirror: Make cancel always cancel pre-READY
|
|
|
357786 |
Bugzilla: 1572856
|
|
|
357786 |
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
|
|
|
357786 |
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
357786 |
RH-Acked-by: John Snow <jsnow@redhat.com>
|
|
|
357786 |
|
|
|
357786 |
Commit b76e4458b1eb3c32e9824fe6aa51f67d2b251748 made the mirror block
|
|
|
357786 |
job respect block-job-cancel's @force flag: With that flag set, it would
|
|
|
357786 |
now always really cancel, even post-READY.
|
|
|
357786 |
|
|
|
357786 |
Unfortunately, it had a side effect: Without that flag set, it would now
|
|
|
357786 |
never cancel, not even before READY. Considering that is an
|
|
|
357786 |
incompatible change and not noted anywhere in the commit or the
|
|
|
357786 |
description of block-job-cancel's @force parameter, this seems
|
|
|
357786 |
unintentional and we should revert to the previous behavior, which is to
|
|
|
357786 |
immediately cancel the job when block-job-cancel is called before source
|
|
|
357786 |
and target are in sync (i.e. before the READY event).
|
|
|
357786 |
|
|
|
357786 |
Cc: qemu-stable@nongnu.org
|
|
|
357786 |
Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1572856
|
|
|
357786 |
Reported-by: Yanan Fu <yfu@redhat.com>
|
|
|
357786 |
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
|
357786 |
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
|
357786 |
Message-id: 20180501220509.14152-2-mreitz@redhat.com
|
|
|
357786 |
Reviewed-by: Jeff Cody <jcody@redhat.com>
|
|
|
357786 |
Signed-off-by: Jeff Cody <jcody@redhat.com>
|
|
|
357786 |
(cherry picked from commit eb36639f7bbc16055e551593b81365e8ae3b0b05)
|
|
|
357786 |
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
|
357786 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
357786 |
---
|
|
|
357786 |
block/mirror.c | 4 +++-
|
|
|
357786 |
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
357786 |
|
|
|
357786 |
diff --git a/block/mirror.c b/block/mirror.c
|
|
|
357786 |
index 9436a8d..99da9c0 100644
|
|
|
357786 |
--- a/block/mirror.c
|
|
|
357786 |
+++ b/block/mirror.c
|
|
|
357786 |
@@ -874,7 +874,9 @@ static void coroutine_fn mirror_run(void *opaque)
|
|
|
357786 |
}
|
|
|
357786 |
trace_mirror_before_sleep(s, cnt, s->synced, delay_ns);
|
|
|
357786 |
block_job_sleep_ns(&s->common, delay_ns);
|
|
|
357786 |
- if (block_job_is_cancelled(&s->common) && s->common.force) {
|
|
|
357786 |
+ if (block_job_is_cancelled(&s->common) &&
|
|
|
357786 |
+ (!s->synced || s->common.force))
|
|
|
357786 |
+ {
|
|
|
357786 |
break;
|
|
|
357786 |
}
|
|
|
357786 |
s->last_pause_ns = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
|
|
|
357786 |
--
|
|
|
357786 |
1.8.3.1
|
|
|
357786 |
|