qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities
@ 2018-11-19 17:29 Eric Blake
  2018-11-19 17:32 ` Eric Blake
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Eric Blake @ 2018-11-19 17:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Max Reitz, open list:Block layer core

Testing granularity at the same size as the cluster isn't quite
as fun as what happens when it is larger or smaller.  This
enhancement also shows that qemu's nbd server can server the
same disk over multiple exports simultaneously.

Signed-off-by: Eric Blake <eblake@redhat.com>
---

Just a testsuite enhancement, so suitable for -rc2 if it gets a
quick review. Otherwise, I will probably include it as part of
a larger series I'm working on to make qemu-nbd handle misaligned
images more sanely (that's a pre-existing problem in the 3.0 release,
so it's not fixing a regression and may be invovled enough to slip
into 4.0, depending on what the rest of my series looks like).

 tests/qemu-iotests/223     | 43 +++++++++++++++++++++++++++++++-------
 tests/qemu-iotests/223.out | 32 +++++++++++++++++++++-------
 2 files changed, 60 insertions(+), 15 deletions(-)

diff --git a/tests/qemu-iotests/223 b/tests/qemu-iotests/223
index 72419e03388..397b865d347 100755
--- a/tests/qemu-iotests/223
+++ b/tests/qemu-iotests/223
@@ -57,10 +57,11 @@ run_qemu()
 }

 echo
-echo "=== Create partially sparse image, then add dirty bitmap ==="
+echo "=== Create partially sparse image, then add dirty bitmaps ==="
 echo

-_make_test_img 4M
+# Two bitmaps, to contrast granularity issues
+_make_test_img -o cluster_size=4k 4M
 $QEMU_IO -c 'w -P 0x11 1M 2M' "$TEST_IMG" | _filter_qemu_io
 run_qemu <<EOF
 { "execute": "qmp_capabilities" }
@@ -78,7 +79,16 @@ run_qemu <<EOF
   "arguments": {
     "node": "n",
     "name": "b",
-    "persistent": true
+    "persistent": true,
+    "granularity": 65536
+  }
+}
+{ "execute": "block-dirty-bitmap-add",
+  "arguments": {
+    "node": "n",
+    "name": "b2",
+    "persistent": true,
+    "granularity": 512
   }
 }
 { "execute": "quit" }
@@ -88,10 +98,11 @@ echo
 echo "=== Write part of the file under active bitmap ==="
 echo

-$QEMU_IO -c 'w -P 0x22 2M 2M' "$TEST_IMG" | _filter_qemu_io
+$QEMU_IO -c 'w -P 0x22 512 512' -c 'w -P 0x33 2M 2M' "$TEST_IMG" \
+    | _filter_qemu_io

 echo
-echo "=== End dirty bitmap, and start serving image over NBD ==="
+echo "=== End dirty bitmaps, and start serving image over NBD ==="
 echo

 _launch_qemu 2> >(_filter_nbd)
@@ -103,6 +114,8 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"blockdev-add",
     "file":{"driver":"file", "filename":"'"$TEST_IMG"'"}}}' "return"
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-block-dirty-bitmap-disable",
   "arguments":{"node":"n", "name":"b"}}' "return"
+_send_qemu_cmd $QEMU_HANDLE '{"execute":"x-block-dirty-bitmap-disable",
+  "arguments":{"node":"n", "name":"b2"}}' "return"
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-start",
   "arguments":{"addr":{"type":"unix",
     "data":{"path":"'"$TEST_DIR/nbd"'"}}}}' "return"
@@ -110,26 +123,40 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add",
   "arguments":{"device":"n"}}' "return"
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap",
   "arguments":{"name":"n", "bitmap":"b"}}' "return"
+_send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add",
+  "arguments":{"device":"n", "name":"n2"}}' "return"
+_send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap",
+  "arguments":{"name":"n2", "bitmap":"b2"}}' "return"

 echo
-echo "=== Contrast normal status with dirty-bitmap status ==="
+echo "=== Contrast normal status to large granularity dirty-bitmap ==="
 echo

 QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
 IMG="driver=nbd,export=n,server.type=unix,server.path=$TEST_DIR/nbd"
-$QEMU_IO -r -c 'r -P 0 0 1m' -c 'r -P 0x11 1m 1m' \
-  -c 'r -P 0x22 2m 2m' --image-opts "$IMG" | _filter_qemu_io
+$QEMU_IO -r -c 'r -P 0x22 512 512' -c 'r -P 0 512k 512k' -c 'r -P 0x11 1m 1m' \
+  -c 'r -P 0x33 2m 2m' --image-opts "$IMG" | _filter_qemu_io
 $QEMU_IMG map --output=json --image-opts \
   "$IMG" | _filter_qemu_img_map
 $QEMU_IMG map --output=json --image-opts \
   "$IMG,x-dirty-bitmap=qemu:dirty-bitmap:b" | _filter_qemu_img_map

+echo
+echo "=== Contrast to small granularity dirty-bitmap ==="
+echo
+
+IMG="driver=nbd,export=n2,server.type=unix,server.path=$TEST_DIR/nbd"
+$QEMU_IMG map --output=json --image-opts \
+  "$IMG,x-dirty-bitmap=qemu:dirty-bitmap:b2" | _filter_qemu_img_map
+
 echo
 echo "=== End NBD server ==="
 echo

 _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-remove",
   "arguments":{"name":"n"}}' "return"
+_send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-remove",
+  "arguments":{"name":"n2"}}' "return"
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-stop"}' "return"
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"quit"}' "return"

diff --git a/tests/qemu-iotests/223.out b/tests/qemu-iotests/223.out
index 33021c8e6a1..de417477de0 100644
--- a/tests/qemu-iotests/223.out
+++ b/tests/qemu-iotests/223.out
@@ -1,6 +1,6 @@
 QA output created by 223

-=== Create partially sparse image, then add dirty bitmap ===
+=== Create partially sparse image, then add dirty bitmaps ===

 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4194304
 wrote 2097152/2097152 bytes at offset 1048576
@@ -11,16 +11,22 @@ QMP_VERSION
 {"return": {}}
 {"return": {}}
 {"return": {}}
+{"return": {}}
 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}


 === Write part of the file under active bitmap ===

+wrote 512/512 bytes at offset 512
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 wrote 2097152/2097152 bytes at offset 2097152
 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)

-=== End dirty bitmap, and start serving image over NBD ===
+=== End dirty bitmaps, and start serving image over NBD ===

+{"return": {}}
+{"return": {}}
+{"return": {}}
 {"return": {}}
 {"return": {}}
 {"return": {}}
@@ -28,21 +34,33 @@ wrote 2097152/2097152 bytes at offset 2097152
 {"return": {}}
 {"return": {}}

-=== Contrast normal status with dirty-bitmap status ===
+=== Contrast normal status to large granularity dirty-bitmap ===

-read 1048576/1048576 bytes at offset 0
-1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 512/512 bytes at offset 512
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 524288/524288 bytes at offset 524288
+512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 read 1048576/1048576 bytes at offset 1048576
 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 read 2097152/2097152 bytes at offset 2097152
 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true},
+{ "start": 4096, "length": 1044480, "depth": 0, "zero": true, "data": false},
 { "start": 1048576, "length": 3145728, "depth": 0, "zero": false, "data": true}]
-[{ "start": 0, "length": 2097152, "depth": 0, "zero": false, "data": true},
+[{ "start": 0, "length": 65536, "depth": 0, "zero": false, "data": false},
+{ "start": 65536, "length": 2031616, "depth": 0, "zero": false, "data": true},
+{ "start": 2097152, "length": 2097152, "depth": 0, "zero": false, "data": false}]
+
+=== Contrast to small granularity dirty-bitmap ===
+
+[{ "start": 0, "length": 512, "depth": 0, "zero": false, "data": true},
+{ "start": 512, "length": 512, "depth": 0, "zero": false, "data": false},
+{ "start": 1024, "length": 2096128, "depth": 0, "zero": false, "data": true},
 { "start": 2097152, "length": 2097152, "depth": 0, "zero": false, "data": false}]

 === End NBD server ===

+{"return": {}}
 {"return": {}}
 {"return": {}}
 {"return": {}}
-- 
2.17.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities
  2018-11-19 17:29 [Qemu-devel] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities Eric Blake
@ 2018-11-19 17:32 ` Eric Blake
  2018-11-20 23:24 ` [Qemu-devel] [Qemu-block] " John Snow
  2018-11-22 15:37 ` [Qemu-devel] " Kevin Wolf
  2 siblings, 0 replies; 4+ messages in thread
From: Eric Blake @ 2018-11-19 17:32 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, open list:Block layer core, Max Reitz

On 11/19/18 11:29 AM, Eric Blake wrote:
> Testing granularity at the same size as the cluster isn't quite
> as fun as what happens when it is larger or smaller.  This
> enhancement also shows that qemu's nbd server can server the

s/server/serve/

> same disk over multiple exports simultaneously.
> 
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---
> 

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [Qemu-block] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities
  2018-11-19 17:29 [Qemu-devel] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities Eric Blake
  2018-11-19 17:32 ` Eric Blake
@ 2018-11-20 23:24 ` John Snow
  2018-11-22 15:37 ` [Qemu-devel] " Kevin Wolf
  2 siblings, 0 replies; 4+ messages in thread
From: John Snow @ 2018-11-20 23:24 UTC (permalink / raw)
  To: Eric Blake, qemu-devel; +Cc: Kevin Wolf, open list:Block layer core, Max Reitz



On 11/19/18 12:29 PM, Eric Blake wrote:
> Testing granularity at the same size as the cluster isn't quite
> as fun as what happens when it is larger or smaller.  This
> enhancement also shows that qemu's nbd server can server the
> same disk over multiple exports simultaneously.
> 
> Signed-off-by: Eric Blake <eblake@redhat.com>

Tested-by: John Snow <jsnow@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>

Good enhancement.

> ---
> 
> Just a testsuite enhancement, so suitable for -rc2 if it gets a
> quick review. Otherwise, I will probably include it as part of
> a larger series I'm working on to make qemu-nbd handle misaligned
> images more sanely (that's a pre-existing problem in the 3.0 release,
> so it's not fixing a regression and may be invovled enough to slip
> into 4.0, depending on what the rest of my series looks like).
> 
>  tests/qemu-iotests/223     | 43 +++++++++++++++++++++++++++++++-------
>  tests/qemu-iotests/223.out | 32 +++++++++++++++++++++-------
>  2 files changed, 60 insertions(+), 15 deletions(-)
> 
> diff --git a/tests/qemu-iotests/223 b/tests/qemu-iotests/223
> index 72419e03388..397b865d347 100755
> --- a/tests/qemu-iotests/223
> +++ b/tests/qemu-iotests/223
> @@ -57,10 +57,11 @@ run_qemu()
>  }
> 
>  echo
> -echo "=== Create partially sparse image, then add dirty bitmap ==="
> +echo "=== Create partially sparse image, then add dirty bitmaps ==="
>  echo
> 
> -_make_test_img 4M
> +# Two bitmaps, to contrast granularity issues
> +_make_test_img -o cluster_size=4k 4M
>  $QEMU_IO -c 'w -P 0x11 1M 2M' "$TEST_IMG" | _filter_qemu_io
>  run_qemu <<EOF
>  { "execute": "qmp_capabilities" }
> @@ -78,7 +79,16 @@ run_qemu <<EOF
>    "arguments": {
>      "node": "n",
>      "name": "b",
> -    "persistent": true
> +    "persistent": true,
> +    "granularity": 65536
> +  }
> +}
> +{ "execute": "block-dirty-bitmap-add",
> +  "arguments": {
> +    "node": "n",
> +    "name": "b2",
> +    "persistent": true,
> +    "granularity": 512
>    }
>  }
>  { "execute": "quit" }
> @@ -88,10 +98,11 @@ echo
>  echo "=== Write part of the file under active bitmap ==="
>  echo
> 
> -$QEMU_IO -c 'w -P 0x22 2M 2M' "$TEST_IMG" | _filter_qemu_io
> +$QEMU_IO -c 'w -P 0x22 512 512' -c 'w -P 0x33 2M 2M' "$TEST_IMG" \
> +    | _filter_qemu_io
> 
>  echo
> -echo "=== End dirty bitmap, and start serving image over NBD ==="
> +echo "=== End dirty bitmaps, and start serving image over NBD ==="
>  echo
> 
>  _launch_qemu 2> >(_filter_nbd)
> @@ -103,6 +114,8 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"blockdev-add",
>      "file":{"driver":"file", "filename":"'"$TEST_IMG"'"}}}' "return"
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-block-dirty-bitmap-disable",
>    "arguments":{"node":"n", "name":"b"}}' "return"
> +_send_qemu_cmd $QEMU_HANDLE '{"execute":"x-block-dirty-bitmap-disable",
> +  "arguments":{"node":"n", "name":"b2"}}' "return"
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-start",
>    "arguments":{"addr":{"type":"unix",
>      "data":{"path":"'"$TEST_DIR/nbd"'"}}}}' "return"
> @@ -110,26 +123,40 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add",
>    "arguments":{"device":"n"}}' "return"
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap",
>    "arguments":{"name":"n", "bitmap":"b"}}' "return"
> +_send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add",
> +  "arguments":{"device":"n", "name":"n2"}}' "return"
> +_send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap",
> +  "arguments":{"name":"n2", "bitmap":"b2"}}' "return"
> 
>  echo
> -echo "=== Contrast normal status with dirty-bitmap status ==="
> +echo "=== Contrast normal status to large granularity dirty-bitmap ==="
>  echo
> 
>  QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
>  IMG="driver=nbd,export=n,server.type=unix,server.path=$TEST_DIR/nbd"
> -$QEMU_IO -r -c 'r -P 0 0 1m' -c 'r -P 0x11 1m 1m' \
> -  -c 'r -P 0x22 2m 2m' --image-opts "$IMG" | _filter_qemu_io
> +$QEMU_IO -r -c 'r -P 0x22 512 512' -c 'r -P 0 512k 512k' -c 'r -P 0x11 1m 1m' \
> +  -c 'r -P 0x33 2m 2m' --image-opts "$IMG" | _filter_qemu_io
>  $QEMU_IMG map --output=json --image-opts \
>    "$IMG" | _filter_qemu_img_map
>  $QEMU_IMG map --output=json --image-opts \
>    "$IMG,x-dirty-bitmap=qemu:dirty-bitmap:b" | _filter_qemu_img_map
> 
> +echo
> +echo "=== Contrast to small granularity dirty-bitmap ==="
> +echo
> +
> +IMG="driver=nbd,export=n2,server.type=unix,server.path=$TEST_DIR/nbd"
> +$QEMU_IMG map --output=json --image-opts \
> +  "$IMG,x-dirty-bitmap=qemu:dirty-bitmap:b2" | _filter_qemu_img_map
> +
>  echo
>  echo "=== End NBD server ==="
>  echo
> 
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-remove",
>    "arguments":{"name":"n"}}' "return"
> +_send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-remove",
> +  "arguments":{"name":"n2"}}' "return"
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-stop"}' "return"
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"quit"}' "return"
> 
> diff --git a/tests/qemu-iotests/223.out b/tests/qemu-iotests/223.out
> index 33021c8e6a1..de417477de0 100644
> --- a/tests/qemu-iotests/223.out
> +++ b/tests/qemu-iotests/223.out
> @@ -1,6 +1,6 @@
>  QA output created by 223
> 
> -=== Create partially sparse image, then add dirty bitmap ===
> +=== Create partially sparse image, then add dirty bitmaps ===
> 
>  Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4194304
>  wrote 2097152/2097152 bytes at offset 1048576
> @@ -11,16 +11,22 @@ QMP_VERSION
>  {"return": {}}
>  {"return": {}}
>  {"return": {}}
> +{"return": {}}
>  {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
> 
> 
>  === Write part of the file under active bitmap ===
> 
> +wrote 512/512 bytes at offset 512
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  wrote 2097152/2097152 bytes at offset 2097152
>  2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> 
> -=== End dirty bitmap, and start serving image over NBD ===
> +=== End dirty bitmaps, and start serving image over NBD ===
> 
> +{"return": {}}
> +{"return": {}}
> +{"return": {}}
>  {"return": {}}
>  {"return": {}}
>  {"return": {}}
> @@ -28,21 +34,33 @@ wrote 2097152/2097152 bytes at offset 2097152
>  {"return": {}}
>  {"return": {}}
> 
> -=== Contrast normal status with dirty-bitmap status ===
> +=== Contrast normal status to large granularity dirty-bitmap ===
> 
> -read 1048576/1048576 bytes at offset 0
> -1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 512/512 bytes at offset 512
> +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 524288/524288 bytes at offset 524288
> +512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  read 1048576/1048576 bytes at offset 1048576
>  1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  read 2097152/2097152 bytes at offset 2097152
>  2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false},
> +[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true},
> +{ "start": 4096, "length": 1044480, "depth": 0, "zero": true, "data": false},
>  { "start": 1048576, "length": 3145728, "depth": 0, "zero": false, "data": true}]
> -[{ "start": 0, "length": 2097152, "depth": 0, "zero": false, "data": true},
> +[{ "start": 0, "length": 65536, "depth": 0, "zero": false, "data": false},
> +{ "start": 65536, "length": 2031616, "depth": 0, "zero": false, "data": true},
> +{ "start": 2097152, "length": 2097152, "depth": 0, "zero": false, "data": false}]
> +
> +=== Contrast to small granularity dirty-bitmap ===
> +
> +[{ "start": 0, "length": 512, "depth": 0, "zero": false, "data": true},
> +{ "start": 512, "length": 512, "depth": 0, "zero": false, "data": false},
> +{ "start": 1024, "length": 2096128, "depth": 0, "zero": false, "data": true},
>  { "start": 2097152, "length": 2097152, "depth": 0, "zero": false, "data": false}]
> 
>  === End NBD server ===
> 
> +{"return": {}}
>  {"return": {}}
>  {"return": {}}
>  {"return": {}}
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities
  2018-11-19 17:29 [Qemu-devel] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities Eric Blake
  2018-11-19 17:32 ` Eric Blake
  2018-11-20 23:24 ` [Qemu-devel] [Qemu-block] " John Snow
@ 2018-11-22 15:37 ` Kevin Wolf
  2 siblings, 0 replies; 4+ messages in thread
From: Kevin Wolf @ 2018-11-22 15:37 UTC (permalink / raw)
  To: Eric Blake; +Cc: qemu-devel, Max Reitz, open list:Block layer core

Am 19.11.2018 um 18:29 hat Eric Blake geschrieben:
> Testing granularity at the same size as the cluster isn't quite
> as fun as what happens when it is larger or smaller.  This
> enhancement also shows that qemu's nbd server can server the
> same disk over multiple exports simultaneously.
> 
> Signed-off-by: Eric Blake <eblake@redhat.com>

Thanks, applied to the block branch.

Kevin

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-11-22 15:38 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-19 17:29 [Qemu-devel] [PATCH for-3.1] iotests: Enhance 223 to cover multiple bitmap granularities Eric Blake
2018-11-19 17:32 ` Eric Blake
2018-11-20 23:24 ` [Qemu-devel] [Qemu-block] " John Snow
2018-11-22 15:37 ` [Qemu-devel] " Kevin Wolf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).