Skip to content

Commit

Permalink
qemu-iotests: allow qcow2 external discarded clusters to contain stal…
Browse files Browse the repository at this point in the history
…e data

Test 244 checks the expected behavior of qcow2 external data files
with respect to zero and discarded clusters.  Filesystems however
are free to ignore discard requests, and this seems to be the
case for overlayfs.  Relax the tests to skip checks on the
external data file for discarded areas, which implies not using
qemu-img compare in the data_file_raw=on case.

This fixes docker tests on RHEL8.

Cc: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20200409191006.24429-1-pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
bonzini authored and kevmw committed Apr 30, 2020
1 parent a50c1f5 commit 3fb6108
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
10 changes: 8 additions & 2 deletions tests/qemu-iotests/244
Expand Up @@ -143,7 +143,6 @@ $QEMU_IO -c 'read -P 0 0 1M' \
echo
$QEMU_IO -c 'read -P 0 0 1M' \
-c 'read -P 0x11 1M 1M' \
-c 'read -P 0 2M 2M' \
-c 'read -P 0x11 4M 1M' \
-c 'read -P 0 5M 1M' \
-f raw "$TEST_IMG.data" |
Expand Down Expand Up @@ -180,8 +179,15 @@ $QEMU_IO -c 'read -P 0 0 1M' \
-f $IMGFMT "$TEST_IMG" |
_filter_qemu_io

# Discarded clusters are only marked as such in the qcow2 metadata, but
# they can contain stale data in the external data file. Instead, zero
# clusters must be zeroed in the external data file too.
echo
$QEMU_IMG compare "$TEST_IMG" "$TEST_IMG.data"
$QEMU_IO -c 'read -P 0 0 1M' \
-c 'read -P 0x11 1M 1M' \
-c 'read -P 0 3M 3M' \
-f raw "$TEST_IMG".data |
_filter_qemu_io

echo -n "qcow2 file size after I/O: "
du -b $TEST_IMG | cut -f1
Expand Down
9 changes: 6 additions & 3 deletions tests/qemu-iotests/244.out
Expand Up @@ -74,8 +74,6 @@ read 1048576/1048576 bytes at offset 0
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 1048576/1048576 bytes at offset 1048576
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 2097152/2097152 bytes at offset 2097152
2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 1048576/1048576 bytes at offset 4194304
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 1048576/1048576 bytes at offset 5242880
Expand Down Expand Up @@ -108,7 +106,12 @@ read 1048576/1048576 bytes at offset 1048576
read 4194304/4194304 bytes at offset 2097152
4 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)

Images are identical.
read 1048576/1048576 bytes at offset 0
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 1048576/1048576 bytes at offset 1048576
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 3145728/3145728 bytes at offset 3145728
3 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
qcow2 file size after I/O: 327680

=== bdrv_co_block_status test for file and offset=0 ===
Expand Down

0 comments on commit 3fb6108

Please sign in to comment.