Message ID | 20190717173937.18747-1-jsnow@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] qapi: add dirty-bitmaps to query-named-block-nodes result | expand |
On 7/17/19 1:39 PM, John Snow wrote: > From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > > Let's add a possibility to query dirty-bitmaps not only on root nodes. > It is useful when dealing both with snapshots and incremental backups. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > [Added deprecation information. --js] > Signed-off-by: John Snow <jsnow@redhat.com> v2: Added feature flag in a bout of excitement over a new feature to play with. Added deprecation text. v3: Removed feature flag because this is the real world and not every new feature is needed for every new patch. --js > --- > block/qapi.c | 5 +++++ > qapi/block-core.json | 6 +++++- > qemu-deprecated.texi | 12 ++++++++++++ > 3 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/block/qapi.c b/block/qapi.c > index 917435f022..15f1030264 100644 > --- a/block/qapi.c > +++ b/block/qapi.c > @@ -79,6 +79,11 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk, > info->backing_file = g_strdup(bs->backing_file); > } > > + if (!QLIST_EMPTY(&bs->dirty_bitmaps)) { > + info->has_dirty_bitmaps = true; > + info->dirty_bitmaps = bdrv_query_dirty_bitmaps(bs); > + } > + > info->detect_zeroes = bs->detect_zeroes; > > if (blk && blk_get_public(blk)->throttle_group_member.throttle_state) { > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 0d43d4f37c..9210ae233d 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -360,6 +360,9 @@ > # @write_threshold: configured write threshold for the device. > # 0 if disabled. (Since 2.3) > # > +# @dirty-bitmaps: dirty bitmaps information (only present if node > +# has one or more dirty bitmaps) (Since 4.2) > +# > # Since: 0.14.0 > # > ## > @@ -378,7 +381,7 @@ > '*bps_wr_max_length': 'int', '*iops_max_length': 'int', > '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int', > '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo', > - 'write_threshold': 'int' } } > + 'write_threshold': 'int', '*dirty-bitmaps': ['BlockDirtyInfo'] } } > > ## > # @BlockDeviceIoStatus: > @@ -656,6 +659,7 @@ > # > # @dirty-bitmaps: dirty bitmaps information (only present if the > # driver has one or more dirty bitmaps) (Since 2.0) > +# Deprecated in 4.2; see BlockDirtyInfo instead. > # > # @io-status: @BlockDeviceIoStatus. Only present if the device > # supports it and the VM is configured to stop on errors > diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi > index c90b08d553..6374b66546 100644 > --- a/qemu-deprecated.texi > +++ b/qemu-deprecated.texi > @@ -134,6 +134,18 @@ The ``status'' field of the ``BlockDirtyInfo'' structure, returned by > the query-block command is deprecated. Two new boolean fields, > ``recording'' and ``busy'' effectively replace it. > > +@subsection query-block result field dirty-bitmaps (Since 4.2) > + > +The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by > +the query-block command is itself now deprecated. The ``dirty-bitmaps`` > +field of the ``BlockDeviceInfo`` struct should be used instead, which is the > +type of the ``inserted`` field in query-block replies, as well as the > +type of array items in query-named-block-nodes. > + > +Since the ``dirty-bitmaps`` field is optionally present in both the old and > +new locations, clients must use introspection to learn where to anticipate > +the field if/when it does appear in command output. > + > @subsection query-cpus (since 2.12.0) > > The ``query-cpus'' command is replaced by the ``query-cpus-fast'' command. >
On 7/17/19 12:39 PM, John Snow wrote: > From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > > Let's add a possibility to query dirty-bitmaps not only on root nodes. > It is useful when dealing both with snapshots and incremental backups. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > [Added deprecation information. --js] > Signed-off-by: John Snow <jsnow@redhat.com> > --- > block/qapi.c | 5 +++++ > qapi/block-core.json | 6 +++++- > qemu-deprecated.texi | 12 ++++++++++++ > 3 files changed, 22 insertions(+), 1 deletion(-) > +++ b/qapi/block-core.json > @@ -360,6 +360,9 @@ > # @write_threshold: configured write threshold for the device. > # 0 if disabled. (Since 2.3) > # > +# @dirty-bitmaps: dirty bitmaps information (only present if node > +# has one or more dirty bitmaps) (Since 4.2) > +# Naming-wise, everything else in this struct uses 'foo_bar' while your addition uses 'foo-bar'. But at this point, I don't know if it's worth uglifying this addition just to fit in. > # Since: 0.14.0 > # > ## > @@ -378,7 +381,7 @@ > '*bps_wr_max_length': 'int', '*iops_max_length': 'int', > '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int', > '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo', > - 'write_threshold': 'int' } } > + 'write_threshold': 'int', '*dirty-bitmaps': ['BlockDirtyInfo'] } } > > ## > # @BlockDeviceIoStatus: > @@ -656,6 +659,7 @@ > # > # @dirty-bitmaps: dirty bitmaps information (only present if the > # driver has one or more dirty bitmaps) (Since 2.0) > +# Deprecated in 4.2; see BlockDirtyInfo instead. s/BlockDirtyInfo/BlockDeviceInfo/ With the spelling fix, Reviewed-by: Eric Blake <eblake@redhat.com> Is this worth squeezing into 4.1, to start the deprecation clock one cycle earlier (on the grounds that the missing information for anonymous nodes is a bug)? Or am I pushing the boundaries too far, where keeping this as 4.2 material remains the best course of action?
On 7/17/19 3:13 PM, Eric Blake wrote: > On 7/17/19 12:39 PM, John Snow wrote: >> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >> >> Let's add a possibility to query dirty-bitmaps not only on root nodes. >> It is useful when dealing both with snapshots and incremental backups. >> >> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >> [Added deprecation information. --js] >> Signed-off-by: John Snow <jsnow@redhat.com> >> --- >> block/qapi.c | 5 +++++ >> qapi/block-core.json | 6 +++++- >> qemu-deprecated.texi | 12 ++++++++++++ >> 3 files changed, 22 insertions(+), 1 deletion(-) > >> +++ b/qapi/block-core.json >> @@ -360,6 +360,9 @@ >> # @write_threshold: configured write threshold for the device. >> # 0 if disabled. (Since 2.3) >> # >> +# @dirty-bitmaps: dirty bitmaps information (only present if node >> +# has one or more dirty bitmaps) (Since 4.2) >> +# > > Naming-wise, everything else in this struct uses 'foo_bar' while your > addition uses 'foo-bar'. But at this point, I don't know if it's worth > uglifying this addition just to fit in. > >> # Since: 0.14.0 >> # >> ## >> @@ -378,7 +381,7 @@ >> '*bps_wr_max_length': 'int', '*iops_max_length': 'int', >> '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int', >> '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo', >> - 'write_threshold': 'int' } } >> + 'write_threshold': 'int', '*dirty-bitmaps': ['BlockDirtyInfo'] } } >> >> ## >> # @BlockDeviceIoStatus: >> @@ -656,6 +659,7 @@ >> # >> # @dirty-bitmaps: dirty bitmaps information (only present if the >> # driver has one or more dirty bitmaps) (Since 2.0) >> +# Deprecated in 4.2; see BlockDirtyInfo instead. > > s/BlockDirtyInfo/BlockDeviceInfo/ > > With the spelling fix, > Sigh, oops. > Reviewed-by: Eric Blake <eblake@redhat.com> > > Is this worth squeezing into 4.1, to start the deprecation clock one > cycle earlier (on the grounds that the missing information for anonymous > nodes is a bug)? Or am I pushing the boundaries too far, where keeping > this as 4.2 material remains the best course of action? > Appealing option. If you think the deprecation plan is actionable enough for libvirt, I'm in favor. --js
On 7/17/19 2:21 PM, John Snow wrote: >> >> Is this worth squeezing into 4.1, to start the deprecation clock one >> cycle earlier (on the grounds that the missing information for anonymous >> nodes is a bug)? Or am I pushing the boundaries too far, where keeping >> this as 4.2 material remains the best course of action? >> > > Appealing option. If you think the deprecation plan is actionable enough > for libvirt, I'm in favor. I know my code for scraping query-block output during virDomainCheckpointGetXMLDesc(,VIR_DOMAIN_CHECKPOINT_XML_SIZE) that reports the size of the bitmap to the end user hasn't landed yet, and that appears to be the only client in libvirt of this information at the moment; but it's not a problem for me to check introspection for where to find it (as libvirt already has a good framework for scraping introspection for other reasons).
On 7/17/19 4:05 PM, Eric Blake wrote: > On 7/17/19 2:21 PM, John Snow wrote: >>> >>> Is this worth squeezing into 4.1, to start the deprecation clock one >>> cycle earlier (on the grounds that the missing information for anonymous >>> nodes is a bug)? Or am I pushing the boundaries too far, where keeping >>> this as 4.2 material remains the best course of action? >>> >> >> Appealing option. If you think the deprecation plan is actionable enough >> for libvirt, I'm in favor. > > I know my code for scraping query-block output during > virDomainCheckpointGetXMLDesc(,VIR_DOMAIN_CHECKPOINT_XML_SIZE) that > reports the size of the bitmap to the end user hasn't landed yet, and > that appears to be the only client in libvirt of this information at the > moment; but it's not a problem for me to check introspection for where > to find it (as libvirt already has a good framework for scraping > introspection for other reasons). > Ah, well... rc1 was yesterday already, so actually I think it's probably just really too late to do this. --js
On 7/17/19 1:39 PM, John Snow wrote: > From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > > Let's add a possibility to query dirty-bitmaps not only on root nodes. > It is useful when dealing both with snapshots and incremental backups. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > [Added deprecation information. --js] > Signed-off-by: John Snow <jsnow@redhat.com> Made spelling edit suggested by Eric, and queued for 4.2. Thanks, applied to my bitmaps tree: https://github.com/jnsnow/qemu/commits/bitmaps https://github.com/jnsnow/qemu.git --js
Patchew URL: https://patchew.org/QEMU/20190717173937.18747-1-jsnow@redhat.com/ Hi, This series failed the asan build test. Please find the testing commands and their output below. If you have Docker installed, you can probably reproduce it locally. === TEST SCRIPT BEGIN === #!/bin/bash make docker-image-fedora V=1 NETWORK=1 time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1 === TEST SCRIPT END === PASS 32 test-opts-visitor /visitor/opts/range/beyond PASS 33 test-opts-visitor /visitor/opts/dict/unvisited MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine" ==10068==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10068==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff27ea5000; bottom 0x7f02672f8000; size: 0x00fcc0bad000 (1085565227008) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-coroutine /basic/no-dangling-access --- PASS 1 fdc-test /x86_64/fdc/cmos PASS 2 fdc-test /x86_64/fdc/no_media_on_start PASS 3 fdc-test /x86_64/fdc/read_without_media ==10065==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 fdc-test /x86_64/fdc/media_change PASS 5 fdc-test /x86_64/fdc/sense_interrupt PASS 6 fdc-test /x86_64/fdc/relative_seek --- PASS 11 test-aio /aio/event/wait PASS 12 test-aio /aio/event/flush PASS 13 test-aio /aio/event/wait/no-flush-cb ==10091==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 14 test-aio /aio/timer/schedule PASS 15 test-aio /aio/coroutine/queue-chaining PASS 16 test-aio /aio-gsource/flush --- PASS 28 test-aio /aio-gsource/timer/schedule MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread" PASS 1 test-aio-multithread /aio/multi/lifecycle ==10097==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 test-aio-multithread /aio/multi/schedule PASS 12 fdc-test /x86_64/fdc/read_no_dma_19 PASS 3 test-aio-multithread /aio/multi/mutex/contended PASS 13 fdc-test /x86_64/fdc/fuzz-registers MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test" ==10125==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 ide-test /x86_64/ide/identify ==10131==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 test-aio-multithread /aio/multi/mutex/handoff PASS 2 ide-test /x86_64/ide/flush ==10142==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 test-aio-multithread /aio/multi/mutex/mcs PASS 3 ide-test /x86_64/ide/bmdma/simple_rw PASS 6 test-aio-multithread /aio/multi/mutex/pthread ==10154==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle" PASS 1 test-throttle /throttle/leak_bucket ==10161==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 test-throttle /throttle/compute_wait PASS 3 test-throttle /throttle/init PASS 4 test-throttle /throttle/destroy --- PASS 15 test-throttle /throttle/config/iops_size PASS 4 ide-test /x86_64/ide/bmdma/trim MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool" ==10169==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10166==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-thread-pool /thread-pool/submit PASS 2 test-thread-pool /thread-pool/submit-aio PASS 3 test-thread-pool /thread-pool/submit-co PASS 4 test-thread-pool /thread-pool/submit-many PASS 5 ide-test /x86_64/ide/bmdma/short_prdt ==10177==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 ide-test /x86_64/ide/bmdma/one_sector_short_prdt ==10183==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 test-thread-pool /thread-pool/cancel PASS 7 ide-test /x86_64/ide/bmdma/long_prdt ==10189==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10189==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcb8b1f000; bottom 0x7f53393fe000; size: 0x00a97f721000 (727987654656) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 8 ide-test /x86_64/ide/bmdma/no_busmaster --- PASS 4 test-hbitmap /hbitmap/iter/empty PASS 9 ide-test /x86_64/ide/flush/nodev PASS 5 test-hbitmap /hbitmap/iter/partial ==10205==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 test-hbitmap /hbitmap/iter/granularity PASS 7 test-hbitmap /hbitmap/iter/iter_and_reset PASS 8 test-hbitmap /hbitmap/get/all --- PASS 14 test-hbitmap /hbitmap/set/twice PASS 15 test-hbitmap /hbitmap/set/overlap PASS 16 test-hbitmap /hbitmap/reset/empty ==10210==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 17 test-hbitmap /hbitmap/reset/general PASS 11 ide-test /x86_64/ide/flush/retry_pci PASS 18 test-hbitmap /hbitmap/reset/all --- PASS 28 test-hbitmap /hbitmap/truncate/shrink/medium PASS 29 test-hbitmap /hbitmap/truncate/shrink/large PASS 30 test-hbitmap /hbitmap/meta/zero ==10216==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 12 ide-test /x86_64/ide/flush/retry_isa ==10222==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 13 ide-test /x86_64/ide/cdrom/pio ==10228==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 14 ide-test /x86_64/ide/cdrom/pio_large ==10234==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 31 test-hbitmap /hbitmap/meta/one PASS 32 test-hbitmap /hbitmap/meta/byte PASS 33 test-hbitmap /hbitmap/meta/word --- MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test" PASS 34 test-hbitmap /hbitmap/meta/sector PASS 35 test-hbitmap /hbitmap/serialize/align ==10248==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 ahci-test /x86_64/ahci/sanity ==10254==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 36 test-hbitmap /hbitmap/serialize/basic PASS 37 test-hbitmap /hbitmap/serialize/part PASS 38 test-hbitmap /hbitmap/serialize/zeroes --- PASS 43 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain" PASS 2 ahci-test /x86_64/ahci/pci_spec ==10263==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-bdrv-drain /bdrv-drain/nested PASS 2 test-bdrv-drain /bdrv-drain/multiparent PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context --- PASS 16 test-bdrv-drain /bdrv-drain/graph-change/drain_subtree PASS 17 test-bdrv-drain /bdrv-drain/graph-change/drain_all ================================================================= ==10263==ERROR: AddressSanitizer: heap-use-after-free on address 0x61200002c1f0 at pc 0x555fd5bd7cb6 bp 0x7f3e853b8680 sp 0x7f3e853b8678 WRITE of size 1 at 0x61200002c1f0 thread T5 ==10262==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! #0 0x555fd5bd7cb5 in aio_notify /tmp/qemu-test/src/util/async.c:351:9 #1 0x555fd5bd98eb in qemu_bh_schedule /tmp/qemu-test/src/util/async.c:167:9 #2 0x555fd5bdcaf0 in aio_co_schedule /tmp/qemu-test/src/util/async.c:464:5 --- Right alloca redzone: cb Shadow gap: cc ==10263==ABORTING ERROR - too few tests run (expected 39, got 17) make: *** [/tmp/qemu-test/src/tests/Makefile.include:904: check-unit] Error 1 make: *** Waiting for unfinished jobs.... PASS 3 ahci-test /x86_64/ahci/pci_enable ==10276==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 ahci-test /x86_64/ahci/hba_spec ==10282==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 ahci-test /x86_64/ahci/hba_enable ==10288==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 ahci-test /x86_64/ahci/identify ==10294==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 ahci-test /x86_64/ahci/max ==10300==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 ahci-test /x86_64/ahci/reset ==10306==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10306==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff4bf74000; bottom 0x7f3115ffe000; size: 0x00ce35f76000 (885668667392) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero ==10312==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10312==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffff662f000; bottom 0x7f96401fe000; size: 0x0069b6431000 (454029414400) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low ==10318==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10318==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc1365d000; bottom 0x7efed3ffe000; size: 0x00fd3f65f000 (1087690371072) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high ==10324==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10324==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcb9fe0000; bottom 0x7f67a9ffe000; size: 0x00950ffe2000 (640218439680) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 12 ahci-test /x86_64/ahci/io/pio/lba28/double/zero ==10330==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10330==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffc365a000; bottom 0x7f90b29fe000; size: 0x006f10c5c000 (477022765056) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low ==10336==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10336==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcb9e51000; bottom 0x7fb6201fe000; size: 0x004699c53000 (303227547648) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high ==10342==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10342==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff9c8cd000; bottom 0x7f2e8fffe000; size: 0x00d10c8cf000 (897858727936) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero ==10348==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10348==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff63303000; bottom 0x7f6800124000; size: 0x0097631df000 (650202968064) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low ==10354==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10354==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc7c156000; bottom 0x7f1ba57fe000; size: 0x00e0d6958000 (965672796160) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 17 ahci-test /x86_64/ahci/io/pio/lba28/long/high ==10360==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero ==10366==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 19 ahci-test /x86_64/ahci/io/pio/lba28/short/low ==10372==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 20 ahci-test /x86_64/ahci/io/pio/lba28/short/high ==10378==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10378==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc6205c000; bottom 0x7fe7aa5fe000; size: 0x0014b7a5e000 (88980447232) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero ==10384==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10384==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcfc2ce000; bottom 0x7ff2eb3fe000; size: 0x000a10ed0000 (43233640448) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low ==10390==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10390==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc90b11000; bottom 0x7fedd67fe000; size: 0x000eba313000 (63253327872) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 23 ahci-test /x86_64/ahci/io/pio/lba48/simple/high ==10396==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10396==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdec297000; bottom 0x7f0628dfe000; size: 0x00f7c3499000 (1064133300224) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero ==10402==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10402==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffeb4f24000; bottom 0x7f755bffe000; size: 0x008958f26000 (589902798848) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 25 ahci-test /x86_64/ahci/io/pio/lba48/double/low ==10408==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10408==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe43440000; bottom 0x7fd116dfe000; size: 0x002d2c642000 (194018287616) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high ==10414==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10414==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc66f54000; bottom 0x7ff4ef7fe000; size: 0x000777756000 (32068952064) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero ==10420==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10420==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdec05c000; bottom 0x7f1f0abfe000; size: 0x00dee145e000 (957262192640) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 28 ahci-test /x86_64/ahci/io/pio/lba48/long/low ==10426==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10426==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd45627000; bottom 0x7f2eeabfe000; size: 0x00ce5aa29000 (886283866112) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 29 ahci-test /x86_64/ahci/io/pio/lba48/long/high ==10432==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 30 ahci-test /x86_64/ahci/io/pio/lba48/short/zero ==10438==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 31 ahci-test /x86_64/ahci/io/pio/lba48/short/low ==10444==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 32 ahci-test /x86_64/ahci/io/pio/lba48/short/high ==10450==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 33 ahci-test /x86_64/ahci/io/dma/lba28/fragmented ==10456==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 34 ahci-test /x86_64/ahci/io/dma/lba28/retry ==10462==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 35 ahci-test /x86_64/ahci/io/dma/lba28/simple/zero ==10468==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 36 ahci-test /x86_64/ahci/io/dma/lba28/simple/low ==10474==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high ==10480==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 38 ahci-test /x86_64/ahci/io/dma/lba28/double/zero ==10486==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 39 ahci-test /x86_64/ahci/io/dma/lba28/double/low ==10492==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high ==10498==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero ==10504==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low ==10510==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 43 ahci-test /x86_64/ahci/io/dma/lba28/long/high ==10516==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero ==10522==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low ==10528==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high ==10534==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero ==10541==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low ==10547==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high ==10553==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero ==10559==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low ==10565==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high ==10571==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero ==10577==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low ==10583==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high ==10589==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero ==10595==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low ==10601==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 58 ahci-test /x86_64/ahci/io/dma/lba48/short/high ==10607==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 59 ahci-test /x86_64/ahci/io/ncq/simple ==10613==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 60 ahci-test /x86_64/ahci/io/ncq/retry ==10620==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 61 ahci-test /x86_64/ahci/flush/simple ==10626==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 62 ahci-test /x86_64/ahci/flush/retry ==10632==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10637==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 63 ahci-test /x86_64/ahci/flush/migrate ==10646==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10651==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 64 ahci-test /x86_64/ahci/migrate/sanity ==10660==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10665==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple ==10674==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10679==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted ==10688==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10693==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple ==10702==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10707==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted ==10716==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 69 ahci-test /x86_64/ahci/cdrom/eject ==10721==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single ==10727==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi ==10733==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single ==10739==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10739==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe07808000; bottom 0x7fc94ebfe000; size: 0x0034b8c0a000 (226437931008) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi ==10745==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test" PASS 1 hd-geo-test /x86_64/hd-geo/ide/none ==10759==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0 ==10765==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank ==10771==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba ==10777==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs ==10783==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank ==10789==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba ==10795==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 hd-geo-test /x86_64/hd-geo/ide/device/mbr/chs ==10801==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs ==10806==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/boot-order-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="boot-order-test" PASS 1 boot-order-test /x86_64/boot-order/pc --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10874==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP' Using expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10880==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP' Using expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10886==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.bridge' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10892==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.ipmikcs' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10898==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.cphp' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10905==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.memhp' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10911==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.numamem' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10917==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/pc/FACP.dimmpxm' Looking for expected file 'tests/data/acpi/pc/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10926==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.bridge' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10932==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.mmio64' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10938==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.ipmibt' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10944==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.cphp' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10951==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.memhp' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10957==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.numamem' Looking for expected file 'tests/data/acpi/q35/FACP' --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==10963==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Looking for expected file 'tests/data/acpi/q35/FACP.dimmpxm' Looking for expected file 'tests/data/acpi/q35/FACP' --- PASS 1 i440fx-test /x86_64/i440fx/defaults PASS 2 i440fx-test /x86_64/i440fx/pam PASS 3 i440fx-test /x86_64/i440fx/firmware/bios ==11047==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 i440fx-test /x86_64/i440fx/firmware/pflash MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/fw_cfg-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="fw_cfg-test" PASS 1 fw_cfg-test /x86_64/fw_cfg/signature --- MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/drive_del-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="drive_del-test" PASS 1 drive_del-test /x86_64/drive_del/without-dev PASS 2 drive_del-test /x86_64/drive_del/after_failed_device_add ==11135==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 drive_del-test /x86_64/blockdev/drive_del_device_del MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/wdt_ib700-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="wdt_ib700-test" PASS 1 wdt_ib700-test /x86_64/wdt_ib700/pause --- PASS 1 usb-hcd-uhci-test /x86_64/uhci/pci/init PASS 2 usb-hcd-uhci-test /x86_64/uhci/pci/port1 PASS 3 usb-hcd-uhci-test /x86_64/uhci/pci/hotplug ==11330==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 usb-hcd-uhci-test /x86_64/uhci/pci/hotplug/usb-storage MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/usb-hcd-xhci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="usb-hcd-xhci-test" PASS 1 usb-hcd-xhci-test /x86_64/xhci/pci/init PASS 2 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug ==11339==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug/usb-uas PASS 4 usb-hcd-xhci-test /x86_64/xhci/pci/hotplug/usb-ccid MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/cpu-plug-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="cpu-plug-test" --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11445==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 vmgenid-test /x86_64/vmgenid/vmgenid/set-guid Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11451==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 vmgenid-test /x86_64/vmgenid/vmgenid/set-guid-auto Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11457==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 vmgenid-test /x86_64/vmgenid/vmgenid/query-monitor MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/tpm-crb-swtpm-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="tpm-crb-swtpm-test" SKIP 1 tpm-crb-swtpm-test /x86_64/tpm/crb-swtpm/test # SKIP swtpm not in PATH or missing --tpm2 support --- Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11562==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11567==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 migration-test /x86_64/migration/fd_proto Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11575==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11580==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 migration-test /x86_64/migration/postcopy/unix PASS 5 migration-test /x86_64/migration/postcopy/recovery Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11610==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11615==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 migration-test /x86_64/migration/precopy/unix Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11624==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11629==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 migration-test /x86_64/migration/precopy/tcp Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11638==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize KVM: No such file or directory qemu-system-x86_64: Back to tcg accelerator ==11643==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 migration-test /x86_64/migration/xbzrle/unix MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/test-x86-cpuid-compat -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid-compat" PASS 1 test-x86-cpuid-compat /x86/cpuid/parsing-plus-minus --- PASS 6 numa-test /x86_64/numa/pc/dynamic/cpu MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/qmp-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="qmp-test" PASS 1 qmp-test /x86_64/qmp/protocol ==11972==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 qmp-test /x86_64/qmp/oob PASS 3 qmp-test /x86_64/qmp/preconfig PASS 4 qmp-test /x86_64/qmp/missing-any-arg --- PASS 6 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/sdhci-pci/sdhci/sdhci-tests/registers PASS 7 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/tpci200/ipack/ipoctal232/ipoctal232-tests/nop PASS 8 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/tpci200/pci-device/pci-device-tests/nop ==12381==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/pci-device/pci-device-tests/nop PASS 10 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/virtio/virtio-tests/nop PASS 11 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/virtio-9p/virtio-9p-tests/config --- PASS 20 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-9p-pci/virtio-9p/virtio-9p-tests/fs/flush/ignored PASS 21 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-balloon-pci/pci-device/pci-device-tests/nop PASS 22 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-balloon-pci/virtio/virtio-tests/nop ==12394==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 23 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk/virtio-blk-tests/indirect ==12401==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 24 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk/virtio-blk-tests/config ==12408==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 25 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk/virtio-blk-tests/basic ==12415==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 26 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk/virtio-blk-tests/resize ==12422==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 27 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk-pci-tests/msix ==12429==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 28 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk-pci-tests/idx ==12436==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 29 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk-pci-tests/nxvirtq ==12443==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 30 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-blk-pci/virtio-blk-pci-tests/hotplug PASS 31 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-net-pci/virtio-net/virtio-net-tests/basic PASS 32 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-net-pci/virtio-net/virtio-net-tests/rx_stop_cont --- PASS 40 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-rng-pci/pci-device/pci-device-tests/nop PASS 41 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-rng-pci/virtio/virtio-tests/nop PASS 42 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-rng-pci/virtio-rng-pci-tests/hotplug ==12554==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 43 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-scsi-pci/pci-device/pci-device-tests/nop ==12560==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 44 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-scsi-pci/virtio-scsi/virtio-scsi-tests/hotplug ==12566==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 45 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-scsi-pci/virtio-scsi/virtio-scsi-tests/unaligned-write-same ==12572==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 46 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-scsi-pci/virtio-scsi-pci-tests/iothread-attach-node PASS 47 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-serial-pci/pci-device/pci-device-tests/nop PASS 48 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-serial-pci/virtio/virtio-tests/nop --- PASS 67 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/i82562/pci-device/pci-device-tests/nop PASS 68 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/i82801/pci-device/pci-device-tests/nop PASS 69 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/ES1370/pci-device/pci-device-tests/nop ==12717==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 70 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/megasas/pci-device/pci-device-tests/nop PASS 71 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/megasas/megasas-tests/dcmd/pd-get-info/fuzz PASS 72 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/ne2k_pci/pci-device/pci-device-tests/nop PASS 73 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/nvme/pci-device/pci-device-tests/nop ==12729==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 74 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/nvme/nvme-tests/oob-cmb-access ==12735==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 75 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/pcnet/pci-device/pci-device-tests/nop PASS 76 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/pci-ohci/pci-device/pci-device-tests/nop PASS 77 qos-test /x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/pci-ohci/pci-ohci-tests/ohci_pci-test-hotplug The full log is available at http://patchew.org/logs/20190717173937.18747-1-jsnow@redhat.com/testing.asan/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
On 7/18/19 6:20 AM, no-reply@patchew.org wrote: > PASS 17 test-bdrv-drain /bdrv-drain/graph-change/drain_all > ================================================================= > ==10263==ERROR: AddressSanitizer: heap-use-after-free on address 0x61200002c1f0 at pc 0x555fd5bd7cb6 bp 0x7f3e853b8680 sp 0x7f3e853b8678 > WRITE of size 1 at 0x61200002c1f0 thread T5 > ==10262==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! > #0 0x555fd5bd7cb5 in aio_notify /tmp/qemu-test/src/util/async.c:351:9 > #1 0x555fd5bd98eb in qemu_bh_schedule /tmp/qemu-test/src/util/async.c:167:9 > #2 0x555fd5bdcaf0 in aio_co_schedule /tmp/qemu-test/src/util/async.c:464:5 I'm fairly certain that this isn't related to this patch.
John Snow <jsnow@redhat.com> writes: > From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > > Let's add a possibility to query dirty-bitmaps not only on root nodes. > It is useful when dealing both with snapshots and incremental backups. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > [Added deprecation information. --js] > Signed-off-by: John Snow <jsnow@redhat.com> > --- > block/qapi.c | 5 +++++ > qapi/block-core.json | 6 +++++- > qemu-deprecated.texi | 12 ++++++++++++ > 3 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/block/qapi.c b/block/qapi.c > index 917435f022..15f1030264 100644 > --- a/block/qapi.c > +++ b/block/qapi.c > @@ -79,6 +79,11 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk, > info->backing_file = g_strdup(bs->backing_file); > } > > + if (!QLIST_EMPTY(&bs->dirty_bitmaps)) { > + info->has_dirty_bitmaps = true; > + info->dirty_bitmaps = bdrv_query_dirty_bitmaps(bs); > + } > + > info->detect_zeroes = bs->detect_zeroes; > > if (blk && blk_get_public(blk)->throttle_group_member.throttle_state) { > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 0d43d4f37c..9210ae233d 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -360,6 +360,9 @@ > # @write_threshold: configured write threshold for the device. > # 0 if disabled. (Since 2.3) > # > +# @dirty-bitmaps: dirty bitmaps information (only present if node > +# has one or more dirty bitmaps) (Since 4.2) > +# > # Since: 0.14.0 > # > ## > @@ -378,7 +381,7 @@ > '*bps_wr_max_length': 'int', '*iops_max_length': 'int', > '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int', > '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo', > - 'write_threshold': 'int' } } > + 'write_threshold': 'int', '*dirty-bitmaps': ['BlockDirtyInfo'] } } > > ## > # @BlockDeviceIoStatus: > @@ -656,6 +659,7 @@ > # > # @dirty-bitmaps: dirty bitmaps information (only present if the > # driver has one or more dirty bitmaps) (Since 2.0) > +# Deprecated in 4.2; see BlockDirtyInfo instead. > # > # @io-status: @BlockDeviceIoStatus. Only present if the device > # supports it and the VM is configured to stop on errors > diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi > index c90b08d553..6374b66546 100644 > --- a/qemu-deprecated.texi > +++ b/qemu-deprecated.texi > @@ -134,6 +134,18 @@ The ``status'' field of the ``BlockDirtyInfo'' structure, returned by > the query-block command is deprecated. Two new boolean fields, > ``recording'' and ``busy'' effectively replace it. > > +@subsection query-block result field dirty-bitmaps (Since 4.2) > + > +The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by > +the query-block command is itself now deprecated. The ``dirty-bitmaps`` > +field of the ``BlockDeviceInfo`` struct should be used instead, which is the > +type of the ``inserted`` field in query-block replies, as well as the > +type of array items in query-named-block-nodes. Would the text be clearer if it talked only about commands, not about types? Here's my (laconic) try: @subsection query-block result field dirty-bitmaps (Since 4.2) In the result of query-block, member ``dirty-bitmaps'' has been moved into member ``inserted''. Aside: same for existing @subsection query-block result field dirty-bitmaps[i].status (since 4.0). > +Since the ``dirty-bitmaps`` field is optionally present in both the old and > +new locations, clients must use introspection to learn where to anticipate > +the field if/when it does appear in command output. > + I find this hint a bit confusing. Do we need it? If yes, laconic me again: Clients should use introspection to learn whether ``dirty-bitmaps'' is in the new location. > @subsection query-cpus (since 2.12.0) > > The ``query-cpus'' command is replaced by the ``query-cpus-fast'' command.
On 7/24/19 12:47 AM, Markus Armbruster wrote: > John Snow <jsnow@redhat.com> writes: > >> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >> >> Let's add a possibility to query dirty-bitmaps not only on root nodes. >> It is useful when dealing both with snapshots and incremental backups. >> >> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >> [Added deprecation information. --js] >> Signed-off-by: John Snow <jsnow@redhat.com> >> --- >> block/qapi.c | 5 +++++ >> qapi/block-core.json | 6 +++++- >> qemu-deprecated.texi | 12 ++++++++++++ >> 3 files changed, 22 insertions(+), 1 deletion(-) >> >> diff --git a/block/qapi.c b/block/qapi.c >> index 917435f022..15f1030264 100644 >> --- a/block/qapi.c >> +++ b/block/qapi.c >> @@ -79,6 +79,11 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk, >> info->backing_file = g_strdup(bs->backing_file); >> } >> >> + if (!QLIST_EMPTY(&bs->dirty_bitmaps)) { >> + info->has_dirty_bitmaps = true; >> + info->dirty_bitmaps = bdrv_query_dirty_bitmaps(bs); >> + } >> + >> info->detect_zeroes = bs->detect_zeroes; >> >> if (blk && blk_get_public(blk)->throttle_group_member.throttle_state) { >> diff --git a/qapi/block-core.json b/qapi/block-core.json >> index 0d43d4f37c..9210ae233d 100644 >> --- a/qapi/block-core.json >> +++ b/qapi/block-core.json >> @@ -360,6 +360,9 @@ >> # @write_threshold: configured write threshold for the device. >> # 0 if disabled. (Since 2.3) >> # >> +# @dirty-bitmaps: dirty bitmaps information (only present if node >> +# has one or more dirty bitmaps) (Since 4.2) >> +# >> # Since: 0.14.0 >> # >> ## >> @@ -378,7 +381,7 @@ >> '*bps_wr_max_length': 'int', '*iops_max_length': 'int', >> '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int', >> '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo', >> - 'write_threshold': 'int' } } >> + 'write_threshold': 'int', '*dirty-bitmaps': ['BlockDirtyInfo'] } } >> >> ## >> # @BlockDeviceIoStatus: >> @@ -656,6 +659,7 @@ >> # >> # @dirty-bitmaps: dirty bitmaps information (only present if the >> # driver has one or more dirty bitmaps) (Since 2.0) >> +# Deprecated in 4.2; see BlockDirtyInfo instead. >> # >> # @io-status: @BlockDeviceIoStatus. Only present if the device >> # supports it and the VM is configured to stop on errors >> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi >> index c90b08d553..6374b66546 100644 >> --- a/qemu-deprecated.texi >> +++ b/qemu-deprecated.texi >> @@ -134,6 +134,18 @@ The ``status'' field of the ``BlockDirtyInfo'' structure, returned by >> the query-block command is deprecated. Two new boolean fields, >> ``recording'' and ``busy'' effectively replace it. >> >> +@subsection query-block result field dirty-bitmaps (Since 4.2) >> + >> +The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by >> +the query-block command is itself now deprecated. The ``dirty-bitmaps`` >> +field of the ``BlockDeviceInfo`` struct should be used instead, which is the >> +type of the ``inserted`` field in query-block replies, as well as the >> +type of array items in query-named-block-nodes. > > Would the text be clearer if it talked only about commands, not about > types? > > Here's my (laconic) try: > > @subsection query-block result field dirty-bitmaps (Since 4.2) > > In the result of query-block, member ``dirty-bitmaps'' has been moved > into member ``inserted''. > Yeah, that's probably better in terms of strictly what the deprecation is. I was trying to imply that the output will also now be visible in other commands as well, but that's not the deprecation -- that's the new feature. ACK > Aside: same for existing @subsection query-block result field > dirty-bitmaps[i].status (since 4.0). > (Probably not worth editing deprecation text that was already published.) >> +Since the ``dirty-bitmaps`` field is optionally present in both the old and >> +new locations, clients must use introspection to learn where to anticipate >> +the field if/when it does appear in command output. >> + > > I find this hint a bit confusing. Do we need it? > I think so, yes: it's nice to inform readers of how to cope with the deprecation. > If yes, laconic me again: > > Clients should use introspection to learn whether ``dirty-bitmaps'' is > in the new location. > Too terse. I want my documentation to greet me in the morning by reading me the local newspaper while I brush my teeth. Yours says the "how", but I think a hint should have the "why": "Since the ``dirty-bitmaps`` field is not always present in command output, Clients should use introspection to learn the location of this field." But I'm only willing to give you a self-deprecating joke and a final nudge to keep a more informative hint, and then I'll capitulate and take your suggestion if you give me a stern look. --js >> @subsection query-cpus (since 2.12.0) >> >> The ``query-cpus'' command is replaced by the ``query-cpus-fast'' command.
John Snow <jsnow@redhat.com> writes: > On 7/24/19 12:47 AM, Markus Armbruster wrote: >> John Snow <jsnow@redhat.com> writes: >> >>> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >>> >>> Let's add a possibility to query dirty-bitmaps not only on root nodes. >>> It is useful when dealing both with snapshots and incremental backups. >>> >>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >>> [Added deprecation information. --js] >>> Signed-off-by: John Snow <jsnow@redhat.com> >>> --- >>> block/qapi.c | 5 +++++ >>> qapi/block-core.json | 6 +++++- >>> qemu-deprecated.texi | 12 ++++++++++++ >>> 3 files changed, 22 insertions(+), 1 deletion(-) >>> >>> diff --git a/block/qapi.c b/block/qapi.c >>> index 917435f022..15f1030264 100644 >>> --- a/block/qapi.c >>> +++ b/block/qapi.c >>> @@ -79,6 +79,11 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk, >>> info->backing_file = g_strdup(bs->backing_file); >>> } >>> >>> + if (!QLIST_EMPTY(&bs->dirty_bitmaps)) { >>> + info->has_dirty_bitmaps = true; >>> + info->dirty_bitmaps = bdrv_query_dirty_bitmaps(bs); >>> + } >>> + >>> info->detect_zeroes = bs->detect_zeroes; >>> >>> if (blk && blk_get_public(blk)->throttle_group_member.throttle_state) { >>> diff --git a/qapi/block-core.json b/qapi/block-core.json >>> index 0d43d4f37c..9210ae233d 100644 >>> --- a/qapi/block-core.json >>> +++ b/qapi/block-core.json >>> @@ -360,6 +360,9 @@ >>> # @write_threshold: configured write threshold for the device. >>> # 0 if disabled. (Since 2.3) >>> # >>> +# @dirty-bitmaps: dirty bitmaps information (only present if node >>> +# has one or more dirty bitmaps) (Since 4.2) >>> +# >>> # Since: 0.14.0 >>> # >>> ## >>> @@ -378,7 +381,7 @@ >>> '*bps_wr_max_length': 'int', '*iops_max_length': 'int', >>> '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int', >>> '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo', >>> - 'write_threshold': 'int' } } >>> + 'write_threshold': 'int', '*dirty-bitmaps': ['BlockDirtyInfo'] } } >>> >>> ## >>> # @BlockDeviceIoStatus: >>> @@ -656,6 +659,7 @@ >>> # >>> # @dirty-bitmaps: dirty bitmaps information (only present if the >>> # driver has one or more dirty bitmaps) (Since 2.0) >>> +# Deprecated in 4.2; see BlockDirtyInfo instead. >>> # >>> # @io-status: @BlockDeviceIoStatus. Only present if the device >>> # supports it and the VM is configured to stop on errors >>> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi >>> index c90b08d553..6374b66546 100644 >>> --- a/qemu-deprecated.texi >>> +++ b/qemu-deprecated.texi >>> @@ -134,6 +134,18 @@ The ``status'' field of the ``BlockDirtyInfo'' structure, returned by >>> the query-block command is deprecated. Two new boolean fields, >>> ``recording'' and ``busy'' effectively replace it. >>> >>> +@subsection query-block result field dirty-bitmaps (Since 4.2) >>> + >>> +The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by >>> +the query-block command is itself now deprecated. The ``dirty-bitmaps`` >>> +field of the ``BlockDeviceInfo`` struct should be used instead, which is the >>> +type of the ``inserted`` field in query-block replies, as well as the >>> +type of array items in query-named-block-nodes. >> >> Would the text be clearer if it talked only about commands, not about >> types? >> >> Here's my (laconic) try: >> >> @subsection query-block result field dirty-bitmaps (Since 4.2) >> >> In the result of query-block, member ``dirty-bitmaps'' has been moved >> into member ``inserted''. >> > > Yeah, that's probably better in terms of strictly what the deprecation > is. I was trying to imply that the output will also now be visible in > other commands as well, but that's not the deprecation -- that's the new > feature. > > ACK > >> Aside: same for existing @subsection query-block result field >> dirty-bitmaps[i].status (since 4.0). >> > > (Probably not worth editing deprecation text that was already published.) Maybe, maybe not. I'm not making demands. >>> +Since the ``dirty-bitmaps`` field is optionally present in both the old and >>> +new locations, clients must use introspection to learn where to anticipate >>> +the field if/when it does appear in command output. >>> + >> >> I find this hint a bit confusing. Do we need it? >> > > I think so, yes: it's nice to inform readers of how to cope with the > deprecation. > >> If yes, laconic me again: >> >> Clients should use introspection to learn whether ``dirty-bitmaps'' is >> in the new location. >> > > Too terse. I want my documentation to greet me in the morning by reading > me the local newspaper while I brush my teeth. > > Yours says the "how", but I think a hint should have the "why": > > "Since the ``dirty-bitmaps`` field is not always present in command > output, Clients should use introspection to learn the location of this > field." This is clearer than the text in Vladimir's patch. It made me understand why you want to talk about optional. See, I've been peddling the introspection kool-aid long enough to take "use introspection to detect interface changes" for granted. The idea that anyone would try something like "if what query-block just gave me doesn't have dirty-bitmaps in the new location, look for it in the old location" just didn't come to me. However, dirty-bitmaps being optional is *not* why you shouldn't do that! In fact, doing it is not even wrong. It only gets wrong when you do it wrongly. Wrong: if what query-block just gave me doesn't have dirty-bitmaps in the new location, only look for it in the old location from now on. Correct: if what query-block just gave me doesn't have dirty-bitmaps in the new location, look for it in the old location this time. Next time, do the same: try the new location first, then the old location. Also correct: if what query-block just gave me doesn't have dirty-bitmaps in the new location, look for it in the old location. Once I've found it in either location, keep looking for it only there in the future. But why would I want to do that? It's more complicated than the previous one for no gain. Correct and preferred: use introspection. You need to use it anyway to detect changes in arguments, so why do something else for changes in results. Have some kool-aid! > But I'm only willing to give you a self-deprecating joke and a final > nudge to keep a more informative hint, and then I'll capitulate and take > your suggestion if you give me a stern look. No, I'm giving you a friendly "use your judgement" instead. You may well be a better judge of what our users need here, because you're less deep into introspection than me, and so are our users. > --js > >>> @subsection query-cpus (since 2.12.0) >>> >>> The ``query-cpus'' command is replaced by the ``query-cpus-fast'' command.
On 7/25/19 2:06 AM, Markus Armbruster wrote: > John Snow <jsnow@redhat.com> writes: > >> On 7/24/19 12:47 AM, Markus Armbruster wrote: >>> John Snow <jsnow@redhat.com> writes: >>> >>>> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >>>> >>>> Let's add a possibility to query dirty-bitmaps not only on root nodes. >>>> It is useful when dealing both with snapshots and incremental backups. >>>> >>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >>>> [Added deprecation information. --js] >>>> Signed-off-by: John Snow <jsnow@redhat.com> >>>> --- >>>> block/qapi.c | 5 +++++ >>>> qapi/block-core.json | 6 +++++- >>>> qemu-deprecated.texi | 12 ++++++++++++ >>>> 3 files changed, 22 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/block/qapi.c b/block/qapi.c >>>> index 917435f022..15f1030264 100644 >>>> --- a/block/qapi.c >>>> +++ b/block/qapi.c >>>> @@ -79,6 +79,11 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk, >>>> info->backing_file = g_strdup(bs->backing_file); >>>> } >>>> >>>> + if (!QLIST_EMPTY(&bs->dirty_bitmaps)) { >>>> + info->has_dirty_bitmaps = true; >>>> + info->dirty_bitmaps = bdrv_query_dirty_bitmaps(bs); >>>> + } >>>> + >>>> info->detect_zeroes = bs->detect_zeroes; >>>> >>>> if (blk && blk_get_public(blk)->throttle_group_member.throttle_state) { >>>> diff --git a/qapi/block-core.json b/qapi/block-core.json >>>> index 0d43d4f37c..9210ae233d 100644 >>>> --- a/qapi/block-core.json >>>> +++ b/qapi/block-core.json >>>> @@ -360,6 +360,9 @@ >>>> # @write_threshold: configured write threshold for the device. >>>> # 0 if disabled. (Since 2.3) >>>> # >>>> +# @dirty-bitmaps: dirty bitmaps information (only present if node >>>> +# has one or more dirty bitmaps) (Since 4.2) >>>> +# >>>> # Since: 0.14.0 >>>> # >>>> ## >>>> @@ -378,7 +381,7 @@ >>>> '*bps_wr_max_length': 'int', '*iops_max_length': 'int', >>>> '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int', >>>> '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo', >>>> - 'write_threshold': 'int' } } >>>> + 'write_threshold': 'int', '*dirty-bitmaps': ['BlockDirtyInfo'] } } >>>> >>>> ## >>>> # @BlockDeviceIoStatus: >>>> @@ -656,6 +659,7 @@ >>>> # >>>> # @dirty-bitmaps: dirty bitmaps information (only present if the >>>> # driver has one or more dirty bitmaps) (Since 2.0) >>>> +# Deprecated in 4.2; see BlockDirtyInfo instead. >>>> # >>>> # @io-status: @BlockDeviceIoStatus. Only present if the device >>>> # supports it and the VM is configured to stop on errors >>>> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi >>>> index c90b08d553..6374b66546 100644 >>>> --- a/qemu-deprecated.texi >>>> +++ b/qemu-deprecated.texi >>>> @@ -134,6 +134,18 @@ The ``status'' field of the ``BlockDirtyInfo'' structure, returned by >>>> the query-block command is deprecated. Two new boolean fields, >>>> ``recording'' and ``busy'' effectively replace it. >>>> >>>> +@subsection query-block result field dirty-bitmaps (Since 4.2) >>>> + >>>> +The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by >>>> +the query-block command is itself now deprecated. The ``dirty-bitmaps`` >>>> +field of the ``BlockDeviceInfo`` struct should be used instead, which is the >>>> +type of the ``inserted`` field in query-block replies, as well as the >>>> +type of array items in query-named-block-nodes. >>> >>> Would the text be clearer if it talked only about commands, not about >>> types? >>> >>> Here's my (laconic) try: >>> >>> @subsection query-block result field dirty-bitmaps (Since 4.2) >>> >>> In the result of query-block, member ``dirty-bitmaps'' has been moved >>> into member ``inserted''. >>> >> >> Yeah, that's probably better in terms of strictly what the deprecation >> is. I was trying to imply that the output will also now be visible in >> other commands as well, but that's not the deprecation -- that's the new >> feature. >> >> ACK >> >>> Aside: same for existing @subsection query-block result field >>> dirty-bitmaps[i].status (since 4.0). >>> >> >> (Probably not worth editing deprecation text that was already published.) > > Maybe, maybe not. I'm not making demands. > >>>> +Since the ``dirty-bitmaps`` field is optionally present in both the old and >>>> +new locations, clients must use introspection to learn where to anticipate >>>> +the field if/when it does appear in command output. >>>> + >>> >>> I find this hint a bit confusing. Do we need it? >>> >> >> I think so, yes: it's nice to inform readers of how to cope with the >> deprecation. >> >>> If yes, laconic me again: >>> >>> Clients should use introspection to learn whether ``dirty-bitmaps'' is >>> in the new location. >>> >> >> Too terse. I want my documentation to greet me in the morning by reading >> me the local newspaper while I brush my teeth. >> >> Yours says the "how", but I think a hint should have the "why": >> >> "Since the ``dirty-bitmaps`` field is not always present in command >> output, Clients should use introspection to learn the location of this >> field." > > This is clearer than the text in Vladimir's patch. It made me Now, now. That confusing text is entirely my own creation. Let's not charge Vladimir with my error :) > understand why you want to talk about optional. See, I've been peddling > the introspection kool-aid long enough to take "use introspection to > detect interface changes" for granted. The idea that anyone would try > something like "if what query-block just gave me doesn't have > dirty-bitmaps in the new location, look for it in the old location" just > didn't come to me. > > However, dirty-bitmaps being optional is *not* why you shouldn't do > that! In fact, doing it is not even wrong. It only gets wrong when you > do it wrongly. > > Wrong: if what query-block just gave me doesn't have dirty-bitmaps in > the new location, only look for it in the old location from now on. > > Correct: if what query-block just gave me doesn't have dirty-bitmaps in > the new location, look for it in the old location this time. Next time, > do the same: try the new location first, then the old location. > > Also correct: if what query-block just gave me doesn't have > dirty-bitmaps in the new location, look for it in the old location. > Once I've found it in either location, keep looking for it only there in > the future. But why would I want to do that? It's more complicated > than the previous one for no gain. > > Correct and preferred: use introspection. You need to use it anyway to > detect changes in arguments, so why do something else for changes in > results. Have some kool-aid! > >> But I'm only willing to give you a self-deprecating joke and a final >> nudge to keep a more informative hint, and then I'll capitulate and take >> your suggestion if you give me a stern look. > > No, I'm giving you a friendly "use your judgement" instead. You may > well be a better judge of what our users need here, because you're less > deep into introspection than me, and so are our users. > Aw, I was hoping you'd laugh. I'll send a new patch, actually. --js
diff --git a/block/qapi.c b/block/qapi.c index 917435f022..15f1030264 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -79,6 +79,11 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk, info->backing_file = g_strdup(bs->backing_file); } + if (!QLIST_EMPTY(&bs->dirty_bitmaps)) { + info->has_dirty_bitmaps = true; + info->dirty_bitmaps = bdrv_query_dirty_bitmaps(bs); + } + info->detect_zeroes = bs->detect_zeroes; if (blk && blk_get_public(blk)->throttle_group_member.throttle_state) { diff --git a/qapi/block-core.json b/qapi/block-core.json index 0d43d4f37c..9210ae233d 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -360,6 +360,9 @@ # @write_threshold: configured write threshold for the device. # 0 if disabled. (Since 2.3) # +# @dirty-bitmaps: dirty bitmaps information (only present if node +# has one or more dirty bitmaps) (Since 4.2) +# # Since: 0.14.0 # ## @@ -378,7 +381,7 @@ '*bps_wr_max_length': 'int', '*iops_max_length': 'int', '*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int', '*iops_size': 'int', '*group': 'str', 'cache': 'BlockdevCacheInfo', - 'write_threshold': 'int' } } + 'write_threshold': 'int', '*dirty-bitmaps': ['BlockDirtyInfo'] } } ## # @BlockDeviceIoStatus: @@ -656,6 +659,7 @@ # # @dirty-bitmaps: dirty bitmaps information (only present if the # driver has one or more dirty bitmaps) (Since 2.0) +# Deprecated in 4.2; see BlockDirtyInfo instead. # # @io-status: @BlockDeviceIoStatus. Only present if the device # supports it and the VM is configured to stop on errors diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi index c90b08d553..6374b66546 100644 --- a/qemu-deprecated.texi +++ b/qemu-deprecated.texi @@ -134,6 +134,18 @@ The ``status'' field of the ``BlockDirtyInfo'' structure, returned by the query-block command is deprecated. Two new boolean fields, ``recording'' and ``busy'' effectively replace it. +@subsection query-block result field dirty-bitmaps (Since 4.2) + +The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by +the query-block command is itself now deprecated. The ``dirty-bitmaps`` +field of the ``BlockDeviceInfo`` struct should be used instead, which is the +type of the ``inserted`` field in query-block replies, as well as the +type of array items in query-named-block-nodes. + +Since the ``dirty-bitmaps`` field is optionally present in both the old and +new locations, clients must use introspection to learn where to anticipate +the field if/when it does appear in command output. + @subsection query-cpus (since 2.12.0) The ``query-cpus'' command is replaced by the ``query-cpus-fast'' command.