aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Reitz <mreitz@redhat.com>2019-11-07 17:36:49 +0100
committerMax Reitz <mreitz@redhat.com>2020-01-06 13:43:06 +0100
commit0485e6ee4cc8a2cec5984cb00218b66e103684f0 (patch)
tree6e7039e77c10e13ad6baba86af15a4bfcf42d30f
parent1aa6630e7b30ae61ed4b990374e7226699f4c76c (diff)
downloadqemu-0485e6ee4cc8a2cec5984cb00218b66e103684f0.zip
qemu-0485e6ee4cc8a2cec5984cb00218b66e103684f0.tar.gz
qemu-0485e6ee4cc8a2cec5984cb00218b66e103684f0.tar.bz2
iotests/qcow2.py: Split feature fields into bits
Print the feature fields as a set of bits so that filtering is easier. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Message-id: 20191107163708.833192-4-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
-rw-r--r--tests/qemu-iotests/031.out36
-rw-r--r--tests/qemu-iotests/036.out18
-rw-r--r--tests/qemu-iotests/039.out22
-rw-r--r--tests/qemu-iotests/060.out20
-rw-r--r--tests/qemu-iotests/061.out72
-rw-r--r--tests/qemu-iotests/137.out2
-rwxr-xr-xtests/qemu-iotests/qcow2.py18
7 files changed, 99 insertions, 89 deletions
diff --git a/tests/qemu-iotests/031.out b/tests/qemu-iotests/031.out
index 68a74d0..d535e40 100644
--- a/tests/qemu-iotests/031.out
+++ b/tests/qemu-iotests/031.out
@@ -18,9 +18,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 72
@@ -46,9 +46,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 72
@@ -74,9 +74,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 72
@@ -109,9 +109,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 104
@@ -142,9 +142,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 104
@@ -175,9 +175,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 104
diff --git a/tests/qemu-iotests/036.out b/tests/qemu-iotests/036.out
index e489b44..15229a9 100644
--- a/tests/qemu-iotests/036.out
+++ b/tests/qemu-iotests/036.out
@@ -16,9 +16,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x8000000000000000
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features [63]
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 104
@@ -50,9 +50,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x8000000000000000
+incompatible_features []
+compatible_features []
+autoclear_features [63]
refcount_order 4
header_length 104
@@ -78,9 +78,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 104
diff --git a/tests/qemu-iotests/039.out b/tests/qemu-iotests/039.out
index 2e356d5..bdafa3a 100644
--- a/tests/qemu-iotests/039.out
+++ b/tests/qemu-iotests/039.out
@@ -4,7 +4,7 @@ QA output created by 039
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-incompatible_features 0x0
+incompatible_features []
No errors were found on the image.
== Creating a dirty image file ==
@@ -12,7 +12,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./common.rc: Killed ( VALGRIND_QEMU="${VALGRIND_QEMU_IO}" _qemu_proc_exec "${VALGRIND_LOGFILE}" "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@" )
-incompatible_features 0x1
+incompatible_features [0]
ERROR cluster 5 refcount=0 reference=1
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
@@ -22,7 +22,7 @@ Data may be corrupted, or further writes to the image may corrupt it.
== Read-only access must still work ==
read 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-incompatible_features 0x1
+incompatible_features [0]
== Repairing the image file must succeed ==
ERROR cluster 5 refcount=0 reference=1
@@ -36,7 +36,7 @@ The following inconsistencies were found and repaired:
Double checking the fixed image now...
No errors were found on the image.
-incompatible_features 0x0
+incompatible_features []
== Data should still be accessible after repair ==
read 512/512 bytes at offset 0
@@ -47,21 +47,21 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./common.rc: Killed ( VALGRIND_QEMU="${VALGRIND_QEMU_IO}" _qemu_proc_exec "${VALGRIND_LOGFILE}" "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@" )
-incompatible_features 0x1
+incompatible_features [0]
ERROR cluster 5 refcount=0 reference=1
Rebuilding refcount structure
Repairing cluster 1 refcount=1 reference=0
Repairing cluster 2 refcount=1 reference=0
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-incompatible_features 0x0
+incompatible_features []
== Creating an image file with lazy_refcounts=off ==
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./common.rc: Killed ( VALGRIND_QEMU="${VALGRIND_QEMU_IO}" _qemu_proc_exec "${VALGRIND_LOGFILE}" "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@" )
-incompatible_features 0x0
+incompatible_features []
No errors were found on the image.
== Committing to a backing file with lazy_refcounts=on ==
@@ -70,8 +70,8 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Image committed.
-incompatible_features 0x0
-incompatible_features 0x0
+incompatible_features []
+incompatible_features []
No errors were found on the image.
No errors were found on the image.
@@ -80,7 +80,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./common.rc: Killed ( VALGRIND_QEMU="${VALGRIND_QEMU_IO}" _qemu_proc_exec "${VALGRIND_LOGFILE}" "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@" )
-incompatible_features 0x1
+incompatible_features [0]
ERROR cluster 5 refcount=0 reference=1
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
@@ -90,6 +90,6 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./common.rc: Killed ( VALGRIND_QEMU="${VALGRIND_QEMU_IO}" _qemu_proc_exec "${VALGRIND_LOGFILE}" "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@" )
-incompatible_features 0x0
+incompatible_features []
No errors were found on the image.
*** done
diff --git a/tests/qemu-iotests/060.out b/tests/qemu-iotests/060.out
index 0f6b065..d27692a 100644
--- a/tests/qemu-iotests/060.out
+++ b/tests/qemu-iotests/060.out
@@ -7,10 +7,10 @@ ERROR cluster 3 refcount=1 reference=3
1 errors were found on the image.
Data may be corrupted, or further writes to the image may corrupt it.
-incompatible_features 0x0
+incompatible_features []
qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with active L1 table); further corruption events will be suppressed
write failed: Input/output error
-incompatible_features 0x2
+incompatible_features [1]
image: TEST_DIR/t.IMGFMT
file format: IMGFMT
virtual size: 64 MiB (67108864 bytes)
@@ -33,10 +33,10 @@ ERROR cluster 2 refcount=1 reference=2
2 errors were found on the image.
Data may be corrupted, or further writes to the image may corrupt it.
-incompatible_features 0x0
+incompatible_features []
qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with refcount block); further corruption events will be suppressed
write failed: Input/output error
-incompatible_features 0x2
+incompatible_features [1]
ERROR refcount block 0 refcount=2
ERROR cluster 2 refcount=1 reference=2
Rebuilding refcount structure
@@ -49,10 +49,10 @@ The following inconsistencies were found and repaired:
Double checking the fixed image now...
No errors were found on the image.
-incompatible_features 0x0
+incompatible_features []
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-incompatible_features 0x0
+incompatible_features []
=== Testing cluster data reference into inactive L2 table ===
@@ -69,10 +69,10 @@ Data may be corrupted, or further writes to the image may corrupt it.
1 leaked clusters were found on the image.
This means waste of disk space, but no harm to data.
-incompatible_features 0x0
+incompatible_features []
qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with inactive L2 table); further corruption events will be suppressed
write failed: Input/output error
-incompatible_features 0x2
+incompatible_features [1]
ERROR cluster 4 refcount=1 reference=2
Leaked cluster 9 refcount=1 reference=0
Repairing cluster 4 refcount=1 reference=2
@@ -85,10 +85,10 @@ The following inconsistencies were found and repaired:
Double checking the fixed image now...
No errors were found on the image.
-incompatible_features 0x0
+incompatible_features []
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-incompatible_features 0x0
+incompatible_features []
read 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
No errors were found on the image.
diff --git a/tests/qemu-iotests/061.out b/tests/qemu-iotests/061.out
index d6a7c2a..8b3091a 100644
--- a/tests/qemu-iotests/061.out
+++ b/tests/qemu-iotests/061.out
@@ -18,9 +18,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x1
-autoclear_features 0x0
+incompatible_features []
+compatible_features [0]
+autoclear_features []
refcount_order 4
header_length 104
@@ -42,9 +42,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 72
@@ -76,9 +76,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x1
-autoclear_features 0x0
+incompatible_features []
+compatible_features [0]
+autoclear_features []
refcount_order 4
header_length 104
@@ -100,9 +100,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 72
@@ -132,9 +132,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x1
-compatible_features 0x1
-autoclear_features 0x0
+incompatible_features [0]
+compatible_features [0]
+autoclear_features []
refcount_order 4
header_length 104
@@ -161,9 +161,9 @@ refcount_table_offset 0x80000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 72
@@ -187,9 +187,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x40000000000
-autoclear_features 0x40000000000
+incompatible_features []
+compatible_features [42]
+autoclear_features [42]
refcount_order 4
header_length 104
@@ -211,9 +211,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 72
@@ -237,9 +237,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 72
@@ -256,9 +256,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x1
-autoclear_features 0x0
+incompatible_features []
+compatible_features [0]
+autoclear_features []
refcount_order 4
header_length 104
@@ -290,9 +290,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x1
-compatible_features 0x1
-autoclear_features 0x0
+incompatible_features [0]
+compatible_features [0]
+autoclear_features []
refcount_order 4
header_length 104
@@ -319,9 +319,9 @@ refcount_table_offset 0x80000
refcount_table_clusters 1
nb_snapshots 0
snapshot_offset 0x0
-incompatible_features 0x0
-compatible_features 0x0
-autoclear_features 0x0
+incompatible_features []
+compatible_features []
+autoclear_features []
refcount_order 4
header_length 104
diff --git a/tests/qemu-iotests/137.out b/tests/qemu-iotests/137.out
index 1c6569e..bd4523a 100644
--- a/tests/qemu-iotests/137.out
+++ b/tests/qemu-iotests/137.out
@@ -36,7 +36,7 @@ qemu-io: Unsupported value 'blubb' for qcow2 option 'overlap-check'. Allowed are
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./common.rc: Killed ( VALGRIND_QEMU="${VALGRIND_QEMU_IO}" _qemu_proc_exec "${VALGRIND_LOGFILE}" "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@" )
-incompatible_features 0x0
+incompatible_features []
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
wrote 65536/65536 bytes at offset 0
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
diff --git a/tests/qemu-iotests/qcow2.py b/tests/qemu-iotests/qcow2.py
index d813b4f..91e4420 100755
--- a/tests/qemu-iotests/qcow2.py
+++ b/tests/qemu-iotests/qcow2.py
@@ -42,9 +42,9 @@ class QcowHeader:
[ uint64_t, '%#x', 'snapshot_offset' ],
# Version 3 header fields
- [ uint64_t, '%#x', 'incompatible_features' ],
- [ uint64_t, '%#x', 'compatible_features' ],
- [ uint64_t, '%#x', 'autoclear_features' ],
+ [ uint64_t, 'mask', 'incompatible_features' ],
+ [ uint64_t, 'mask', 'compatible_features' ],
+ [ uint64_t, 'mask', 'autoclear_features' ],
[ uint32_t, '%d', 'refcount_order' ],
[ uint32_t, '%d', 'header_length' ],
];
@@ -130,7 +130,17 @@ class QcowHeader:
def dump(self):
for f in QcowHeader.fields:
- print("%-25s" % f[2], f[1] % self.__dict__[f[2]])
+ value = self.__dict__[f[2]]
+ if f[1] == 'mask':
+ bits = []
+ for bit in range(64):
+ if value & (1 << bit):
+ bits.append(bit)
+ value_str = str(bits)
+ else:
+ value_str = f[1] % value
+
+ print("%-25s" % f[2], value_str)
print("")
def dump_extensions(self):