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>
This commit is contained in:
Max Reitz 2019-11-07 17:36:49 +01:00
parent 1aa6630e7b
commit 0485e6ee4c
7 changed files with 99 additions and 89 deletions

View File

@ -18,9 +18,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 72 header_length 72
@ -46,9 +46,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 72 header_length 72
@ -74,9 +74,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 72 header_length 72
@ -109,9 +109,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -142,9 +142,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -175,9 +175,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104

View File

@ -16,9 +16,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x8000000000000000 incompatible_features [63]
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -50,9 +50,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x8000000000000000 autoclear_features [63]
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -78,9 +78,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104

View File

@ -4,7 +4,7 @@ QA output created by 039
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
wrote 512/512 bytes at offset 0 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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. No errors were found on the image.
== Creating a dirty image file == == 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 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 "$@" ) ./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 cluster 5 refcount=0 reference=1
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0 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-only access must still work ==
read 512/512 bytes at offset 0 read 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 == == Repairing the image file must succeed ==
ERROR cluster 5 refcount=0 reference=1 ERROR cluster 5 refcount=0 reference=1
@ -36,7 +36,7 @@ The following inconsistencies were found and repaired:
Double checking the fixed image now... Double checking the fixed image now...
No errors were found on the image. No errors were found on the image.
incompatible_features 0x0 incompatible_features []
== Data should still be accessible after repair == == Data should still be accessible after repair ==
read 512/512 bytes at offset 0 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 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 "$@" ) ./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 cluster 5 refcount=0 reference=1
Rebuilding refcount structure Rebuilding refcount structure
Repairing cluster 1 refcount=1 reference=0 Repairing cluster 1 refcount=1 reference=0
Repairing cluster 2 refcount=1 reference=0 Repairing cluster 2 refcount=1 reference=0
wrote 512/512 bytes at offset 0 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 == == Creating an image file with lazy_refcounts=off ==
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
wrote 512/512 bytes at offset 0 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 "$@" ) ./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. No errors were found on the image.
== Committing to a backing file with lazy_refcounts=on == == 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 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Image committed. Image committed.
incompatible_features 0x0 incompatible_features []
incompatible_features 0x0 incompatible_features []
No errors were found on the image. No errors were found on the image.
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 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 "$@" ) ./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 cluster 5 refcount=0 reference=1
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0 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 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 "$@" ) ./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. No errors were found on the image.
*** done *** done

View File

@ -7,10 +7,10 @@ ERROR cluster 3 refcount=1 reference=3
1 errors were found on the image. 1 errors were found on the image.
Data may be corrupted, or further writes to the image may corrupt it. 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 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 write failed: Input/output error
incompatible_features 0x2 incompatible_features [1]
image: TEST_DIR/t.IMGFMT image: TEST_DIR/t.IMGFMT
file format: IMGFMT file format: IMGFMT
virtual size: 64 MiB (67108864 bytes) virtual size: 64 MiB (67108864 bytes)
@ -33,10 +33,10 @@ ERROR cluster 2 refcount=1 reference=2
2 errors were found on the image. 2 errors were found on the image.
Data may be corrupted, or further writes to the image may corrupt it. 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 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 write failed: Input/output error
incompatible_features 0x2 incompatible_features [1]
ERROR refcount block 0 refcount=2 ERROR refcount block 0 refcount=2
ERROR cluster 2 refcount=1 reference=2 ERROR cluster 2 refcount=1 reference=2
Rebuilding refcount structure Rebuilding refcount structure
@ -49,10 +49,10 @@ The following inconsistencies were found and repaired:
Double checking the fixed image now... Double checking the fixed image now...
No errors were found on the image. No errors were found on the image.
incompatible_features 0x0 incompatible_features []
wrote 512/512 bytes at offset 0 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 === === 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. 1 leaked clusters were found on the image.
This means waste of disk space, but no harm to data. 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 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 write failed: Input/output error
incompatible_features 0x2 incompatible_features [1]
ERROR cluster 4 refcount=1 reference=2 ERROR cluster 4 refcount=1 reference=2
Leaked cluster 9 refcount=1 reference=0 Leaked cluster 9 refcount=1 reference=0
Repairing cluster 4 refcount=1 reference=2 Repairing cluster 4 refcount=1 reference=2
@ -85,10 +85,10 @@ The following inconsistencies were found and repaired:
Double checking the fixed image now... Double checking the fixed image now...
No errors were found on the image. No errors were found on the image.
incompatible_features 0x0 incompatible_features []
wrote 512/512 bytes at offset 0 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 read 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
No errors were found on the image. No errors were found on the image.

View File

@ -18,9 +18,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x1 compatible_features [0]
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -42,9 +42,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 72 header_length 72
@ -76,9 +76,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x1 compatible_features [0]
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -100,9 +100,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 72 header_length 72
@ -132,9 +132,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x1 incompatible_features [0]
compatible_features 0x1 compatible_features [0]
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -161,9 +161,9 @@ refcount_table_offset 0x80000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 72 header_length 72
@ -187,9 +187,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x40000000000 compatible_features [42]
autoclear_features 0x40000000000 autoclear_features [42]
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -211,9 +211,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 72 header_length 72
@ -237,9 +237,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 72 header_length 72
@ -256,9 +256,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x1 compatible_features [0]
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -290,9 +290,9 @@ refcount_table_offset 0x10000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x1 incompatible_features [0]
compatible_features 0x1 compatible_features [0]
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104
@ -319,9 +319,9 @@ refcount_table_offset 0x80000
refcount_table_clusters 1 refcount_table_clusters 1
nb_snapshots 0 nb_snapshots 0
snapshot_offset 0x0 snapshot_offset 0x0
incompatible_features 0x0 incompatible_features []
compatible_features 0x0 compatible_features []
autoclear_features 0x0 autoclear_features []
refcount_order 4 refcount_order 4
header_length 104 header_length 104

View File

@ -36,7 +36,7 @@ qemu-io: Unsupported value 'blubb' for qcow2 option 'overlap-check'. Allowed are
wrote 512/512 bytes at offset 0 wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 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 "$@" ) ./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 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
wrote 65536/65536 bytes at offset 0 wrote 65536/65536 bytes at offset 0
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)

View File

@ -42,9 +42,9 @@ class QcowHeader:
[ uint64_t, '%#x', 'snapshot_offset' ], [ uint64_t, '%#x', 'snapshot_offset' ],
# Version 3 header fields # Version 3 header fields
[ uint64_t, '%#x', 'incompatible_features' ], [ uint64_t, 'mask', 'incompatible_features' ],
[ uint64_t, '%#x', 'compatible_features' ], [ uint64_t, 'mask', 'compatible_features' ],
[ uint64_t, '%#x', 'autoclear_features' ], [ uint64_t, 'mask', 'autoclear_features' ],
[ uint32_t, '%d', 'refcount_order' ], [ uint32_t, '%d', 'refcount_order' ],
[ uint32_t, '%d', 'header_length' ], [ uint32_t, '%d', 'header_length' ],
]; ];
@ -130,7 +130,17 @@ def update(self, fd):
def dump(self): def dump(self):
for f in QcowHeader.fields: 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("") print("")
def dump_extensions(self): def dump_extensions(self):