qcow2: List autoclear bit names in header
The feature table is supposed to advertise the name of all feature bits that we support; however, we forgot to update the table for autoclear bits. While at it, move the table to read-only memory in code, and tweak the qcow2 spec to name the second autoclear bit. Update iotests that are affected by the longer header length. Fixes:88ddffae
Fixes:93c24936
Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20200324174233.1622067-3-eblake@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
a951a631b9
commit
bb40ebce2c
@ -2825,7 +2825,7 @@ int qcow2_update_header(BlockDriverState *bs)
|
||||
|
||||
/* Feature table */
|
||||
if (s->qcow_version >= 3) {
|
||||
Qcow2Feature features[] = {
|
||||
static const Qcow2Feature features[] = {
|
||||
{
|
||||
.type = QCOW2_FEAT_TYPE_INCOMPATIBLE,
|
||||
.bit = QCOW2_INCOMPAT_DIRTY_BITNR,
|
||||
@ -2846,6 +2846,16 @@ int qcow2_update_header(BlockDriverState *bs)
|
||||
.bit = QCOW2_COMPAT_LAZY_REFCOUNTS_BITNR,
|
||||
.name = "lazy refcounts",
|
||||
},
|
||||
{
|
||||
.type = QCOW2_FEAT_TYPE_AUTOCLEAR,
|
||||
.bit = QCOW2_AUTOCLEAR_BITMAPS_BITNR,
|
||||
.name = "bitmaps",
|
||||
},
|
||||
{
|
||||
.type = QCOW2_FEAT_TYPE_AUTOCLEAR,
|
||||
.bit = QCOW2_AUTOCLEAR_DATA_FILE_RAW_BITNR,
|
||||
.name = "raw external data",
|
||||
},
|
||||
};
|
||||
|
||||
ret = header_ext_add(buf, QCOW2_EXT_MAGIC_FEATURE_TABLE,
|
||||
|
@ -143,7 +143,8 @@ the next fields through header_length.
|
||||
bit is unset, the bitmaps extension data must be
|
||||
considered inconsistent.
|
||||
|
||||
Bit 1: If this bit is set, the external data file can
|
||||
Bit 1: Raw external data bit
|
||||
If this bit is set, the external data file can
|
||||
be read as a consistent standalone raw image
|
||||
without looking at the qcow2 metadata.
|
||||
|
||||
|
@ -117,7 +117,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
Header extension:
|
||||
@ -150,7 +150,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
Header extension:
|
||||
@ -164,7 +164,7 @@ No errors were found on the image.
|
||||
|
||||
magic 0x514649fb
|
||||
version 3
|
||||
backing_file_offset 0x178
|
||||
backing_file_offset 0x1d8
|
||||
backing_file_size 0x17
|
||||
cluster_bits 16
|
||||
size 67108864
|
||||
@ -188,7 +188,7 @@ data 'host_device'
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
Header extension:
|
||||
|
@ -26,7 +26,7 @@ compatible_features []
|
||||
autoclear_features [63]
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ compatible_features []
|
||||
autoclear_features []
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
*** done
|
||||
|
@ -26,7 +26,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
magic 0x514649fb
|
||||
@ -84,7 +84,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
magic 0x514649fb
|
||||
@ -140,7 +140,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
ERROR cluster 5 refcount=0 reference=1
|
||||
@ -195,7 +195,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
magic 0x514649fb
|
||||
@ -264,7 +264,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
read 65536/65536 bytes at offset 44040192
|
||||
@ -298,7 +298,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
ERROR cluster 5 refcount=0 reference=1
|
||||
@ -327,7 +327,7 @@ header_length 104
|
||||
|
||||
Header extension:
|
||||
magic 0x6803f857
|
||||
length 192
|
||||
length 288
|
||||
data <binary>
|
||||
|
||||
read 131072/131072 bytes at offset 0
|
||||
|
Loading…
Reference in New Issue
Block a user