Files
qemu/tests/qemu-iotests
Hanna Reitz 9ffd6d646d iotests/108: Test new refcount rebuild algorithm
One clear problem with how qcow2's refcount structure rebuild algorithm
used to be before "qcow2: Improve refcount structure rebuilding" was
that it is prone to failure for qcow2 images on block devices: There is
generally unused space after the actual image, and if that exceeds what
one refblock covers, the old algorithm would invariably write the
reftable past the block device's end, which cannot work.  The new
algorithm does not have this problem.

Test it with three tests:
(1) Create an image with more empty space at the end than what one
    refblock covers, see whether rebuilding the refcount structures
    results in a change in the image file length.  (It should not.)

(2) Leave precisely enough space somewhere at the beginning of the image
    for the new reftable (and the refblock for that place), see whether
    the new algorithm puts the reftable there.  (It should.)

(3) Test the original problem: Create (something like) a block device
    with a fixed size, then create a qcow2 image in there, write some
    data, and then have qemu-img check rebuild the refcount structures.
    Before HEAD^, the reftable would have been written past the image
    file end, i.e. outside of what the block device provides, which
    cannot work.  HEAD^ should have fixed that.
    ("Something like a block device" means a loop device if we can use
    one ("sudo -n losetup" works), or a FUSE block export with
    growable=false otherwise.)

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20220405134652.19278-3-hreitz@redhat.com>
2022-04-20 12:09:17 +02:00
..
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-05-12 17:42:23 +02:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2020-12-11 17:52:40 +01:00
2021-01-20 14:53:22 -06:00
2022-03-29 16:30:55 +02:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2022-03-29 16:30:55 +02:00
2020-09-08 13:40:49 +02:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2022-02-01 10:51:39 +01:00
2021-01-20 14:53:22 -06:00
2021-03-29 18:06:14 +02:00
2021-03-29 18:06:14 +02:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-10-15 16:06:23 +02:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2020-09-02 16:32:14 -05:00
2021-01-20 14:53:22 -06:00
2020-01-06 13:43:07 +01:00
2022-04-20 10:14:05 +02:00
2017-05-11 12:08:24 +02:00
2017-09-06 15:19:01 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2020-12-11 17:52:40 +01:00
2020-01-06 13:43:07 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2018-06-11 16:18:45 +02:00
2021-07-09 13:18:32 +02:00
2021-01-20 14:53:22 -06:00
2021-03-29 14:13:55 +02:00
2021-01-26 14:36:37 +01:00
2021-01-26 14:36:37 +01:00
2021-03-18 09:22:55 +00:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2022-02-01 10:51:39 +01:00
2020-01-06 13:43:07 +01:00
2021-12-28 15:18:59 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2022-03-22 10:14:37 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-07-09 13:19:11 +02:00
2020-03-11 15:54:38 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2016-09-20 22:10:57 +02:00
2021-01-20 14:53:22 -06:00
2016-09-20 22:10:57 +02:00
2021-01-20 14:53:22 -06:00
2017-09-26 15:00:32 +02:00
2021-01-20 14:53:22 -06:00
2016-09-20 22:10:57 +02:00
2021-01-20 14:53:22 -06:00
2021-03-19 15:18:43 +01:00
2021-01-20 14:53:22 -06:00
2017-02-12 00:47:42 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-26 14:36:37 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2022-03-04 18:14:40 +01:00
2022-03-04 18:14:40 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2020-07-28 15:28:56 +02:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2020-09-07 12:31:31 +02:00
2021-01-20 14:53:22 -06:00
2021-11-23 15:39:12 +01:00
2022-03-22 10:50:10 +01:00
2022-03-22 10:50:10 +01:00
2021-01-20 14:53:22 -06:00
2022-02-01 10:51:39 +01:00
2021-11-23 15:39:12 +01:00
2022-03-22 10:14:34 +01:00
2022-03-22 10:14:34 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2022-02-01 10:51:39 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2019-10-10 10:56:18 +02:00
2021-01-20 14:53:22 -06:00
2019-03-19 15:49:29 +01:00
2019-02-01 13:46:44 +01:00
2021-01-20 14:53:22 -06:00
2019-02-01 13:46:44 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2019-03-19 15:49:29 +01:00
2021-07-09 13:19:11 +02:00
2021-07-09 13:19:11 +02:00
2021-01-20 14:53:22 -06:00
2019-06-04 16:55:58 +02:00
2021-01-20 14:53:22 -06:00
2021-03-24 14:25:48 +00:00
2020-09-02 16:32:14 -05:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2022-01-14 12:03:16 +01:00
2021-01-20 14:53:22 -06:00
2019-11-18 16:01:31 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-12-28 15:18:59 +01:00
2021-12-28 15:18:59 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2021-11-01 11:54:59 -04:00
2021-07-09 13:19:11 +02:00
2021-01-20 14:53:22 -06:00
2021-07-09 13:18:32 +02:00
2022-02-01 10:51:39 +01:00
2022-02-01 10:51:39 +01:00
2022-04-20 10:14:08 +02:00
2022-02-01 10:51:39 +01:00
2021-01-20 14:53:22 -06:00
2021-01-20 14:53:22 -06:00
2022-01-14 12:03:16 +01:00
2022-01-14 12:03:16 +01:00
2021-01-20 14:53:22 -06:00
2021-01-27 20:53:14 +01:00

=== This is the QEMU I/O test suite ===

* Intro

This package contains a simple test suite for the I/O layer of qemu.
It does not require a guest, but only the qemu, qemu-img and qemu-io
binaries.  This does limit it to exercise the low-level I/O path only
but no actual block drivers like ide, scsi or virtio.

* Usage

Just run ./check to run all tests for the raw image format, or ./check
-qcow2 to test the qcow2 image format.  The output of ./check -h explains
additional options to test further image formats or I/O methods.

* Feedback and patches

Please send improvements to the test suite, general feedback or just
reports of failing tests cases to qemu-devel@nongnu.org with a CC:
to qemu-block@nongnu.org.