[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v2] iotests: 109: Filter out "len" of failed job
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-block] [PATCH v2] iotests: 109: Filter out "len" of failed jobs |
Date: |
Wed, 19 Apr 2017 19:13:35 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 19.04.2017 um 11:17 hat Fam Zheng geschrieben:
> Mirror calculates job len from current I/O progress:
>
> s->common.len = s->common.offset +
> (cnt + s->sectors_in_flight) * BDRV_SECTOR_SIZE;
>
> The final "len" of a failed mirror job in iotests 109 depends on the
> subtle timing of the completion of read and write issued in the first
> mirror iteration. The second iteration may or may not have run when the
> I/O error happens, resulting in non-deterministic output of the
> BLOCK_JOB_COMPLETED event text.
>
> Similar to what was done in a752e4786, filter out the field to make the
> test robust.
>
> Tested-by: Eric Blake <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> Signed-off-by: Fam Zheng <address@hidden>
This improves things a bit, but the test case is still failing for me.
It's not deterministic, so the following is just an example.
Kevin
--- /home/kwolf/source/qemu/tests/qemu-iotests/109.out 2017-04-19
19:10:27.458121955 +0200
+++ 109.out.bad 2017-04-19 19:10:49.782467425 +0200
@@ -135,7 +135,7 @@
Specify the 'raw' format explicitly to remove the restrictions.
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_JOB_ERROR", "data": {"device": "src", "operation": "write", "action":
"report"}}
-{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 65536, "offset":
OFFSET, "speed": 0, "type": "mirror", "error": "Operation not permitted"}}
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 2560, "offset": OFFSET,
"speed": 0, "type": "mirror", "error": "Operation not permitted"}}
{"return": []}
read 65536/65536 bytes at offset 0
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
@@ -195,7 +195,7 @@
Specify the 'raw' format explicitly to remove the restrictions.
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_JOB_ERROR", "data": {"device": "src", "operation": "write", "action":
"report"}}
-{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 65536, "offset":
OFFSET, "speed": 0, "type": "mirror", "error": "Operation not permitted"}}
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 2048, "offset": OFFSET,
"speed": 0, "type": "mirror", "error": "Operation not permitted"}}
{"return": []}
read 65536/65536 bytes at offset 0
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)