Blame SOURCES/kvm-block-mirror-honor-ratelimit-again.patch

1bdc94
From 294916c8fdc6fdd221543c70b716e31591315379 Mon Sep 17 00:00:00 2001
1bdc94
From: Max Reitz <mreitz@redhat.com>
1bdc94
Date: Mon, 18 Jun 2018 14:47:34 +0200
1bdc94
Subject: [PATCH 24/54] block/mirror: honor ratelimit again
1bdc94
1bdc94
RH-Author: Max Reitz <mreitz@redhat.com>
1bdc94
Message-id: <20180618144736.29873-2-mreitz@redhat.com>
1bdc94
Patchwork-id: 80747
1bdc94
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH 1/3] block/mirror: honor ratelimit again
1bdc94
Bugzilla: 1572856
1bdc94
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
1bdc94
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
1bdc94
RH-Acked-by: John Snow <jsnow@redhat.com>
1bdc94
1bdc94
From: Stefan Hajnoczi <stefanha@redhat.com>
1bdc94
1bdc94
Commit b76e4458b1eb3c32e9824fe6aa51f67d2b251748 ("block/mirror: change
1bdc94
the semantic of 'force' of block-job-cancel") accidentally removed the
1bdc94
ratelimit in the mirror job.
1bdc94
1bdc94
Reintroduce the ratelimit but keep the block-job-cancel force=true
1bdc94
behavior that was added in commit
1bdc94
b76e4458b1eb3c32e9824fe6aa51f67d2b251748.
1bdc94
1bdc94
Note that block_job_sleep_ns() returns immediately when the job is
1bdc94
cancelled.  Therefore it's safe to unconditionally call
1bdc94
block_job_sleep_ns() - a cancelled job does not sleep.
1bdc94
1bdc94
This commit fixes the non-deterministic qemu-iotests 185 output.  The
1bdc94
test relies on the ratelimit to make the job sleep until the 'quit'
1bdc94
command is processed.  Previously the job could complete before the
1bdc94
'quit' command was received since there was no ratelimit.
1bdc94
1bdc94
Cc: Liang Li <liliang.opensource@gmail.com>
1bdc94
Cc: Jeff Cody <jcody@redhat.com>
1bdc94
Cc: Kevin Wolf <kwolf@redhat.com>
1bdc94
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
1bdc94
Message-id: 20180424123527.19168-1-stefanha@redhat.com
1bdc94
Signed-off-by: Jeff Cody <jcody@redhat.com>
1bdc94
(cherry picked from commit ddc4115efdfa6619689fe18871aa2d37890b3463)
1bdc94
Signed-off-by: Max Reitz <mreitz@redhat.com>
1bdc94
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
1bdc94
---
1bdc94
 block/mirror.c             | 8 +++++---
1bdc94
 tests/qemu-iotests/185.out | 2 +-
1bdc94
 2 files changed, 6 insertions(+), 4 deletions(-)
1bdc94
1bdc94
diff --git a/block/mirror.c b/block/mirror.c
1bdc94
index 820f512..9436a8d 100644
1bdc94
--- a/block/mirror.c
1bdc94
+++ b/block/mirror.c
1bdc94
@@ -868,12 +868,14 @@ static void coroutine_fn mirror_run(void *opaque)
1bdc94
         }
1bdc94
 
1bdc94
         ret = 0;
1bdc94
+
1bdc94
+        if (s->synced && !should_complete) {
1bdc94
+            delay_ns = (s->in_flight == 0 && cnt == 0 ? SLICE_TIME : 0);
1bdc94
+        }
1bdc94
         trace_mirror_before_sleep(s, cnt, s->synced, delay_ns);
1bdc94
+        block_job_sleep_ns(&s->common, delay_ns);
1bdc94
         if (block_job_is_cancelled(&s->common) && s->common.force) {
1bdc94
             break;
1bdc94
-        } else if (!should_complete) {
1bdc94
-            delay_ns = (s->in_flight == 0 && cnt == 0 ? SLICE_TIME : 0);
1bdc94
-            block_job_sleep_ns(&s->common, delay_ns);
1bdc94
         }
1bdc94
         s->last_pause_ns = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
1bdc94
     }
1bdc94
diff --git a/tests/qemu-iotests/185.out b/tests/qemu-iotests/185.out
1bdc94
index 2c4b04d..992162f 100644
1bdc94
--- a/tests/qemu-iotests/185.out
1bdc94
+++ b/tests/qemu-iotests/185.out
1bdc94
@@ -36,9 +36,9 @@ Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 backing_file=TEST_DIR/t.q
1bdc94
 {"return": {}}
1bdc94
 Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 size=67108864 cluster_size=65536 lazy_refcounts=off refcount_bits=16
1bdc94
 {"return": {}}
1bdc94
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "disk", "len": 4194304, "offset": 4194304, "speed": 65536, "type": "mirror"}}
1bdc94
 {"return": {}}
1bdc94
 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
1bdc94
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "disk", "len": 4194304, "offset": 4194304, "speed": 65536, "type": "mirror"}}
1bdc94
 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "disk", "len": 4194304, "offset": 4194304, "speed": 65536, "type": "mirror"}}
1bdc94
 
1bdc94
 === Start backup job and exit qemu ===
1bdc94
-- 
1bdc94
1.8.3.1
1bdc94