Browse Source

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>
(cherry picked from commit bb40ebce2c)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
stable-4.2
Eric Blake 1 year ago
committed by Michael Roth
parent
commit
5eca12bbad
5 changed files with 26 additions and 15 deletions
  1. +11
    -1
      block/qcow2.c
  2. +2
    -1
      docs/interop/qcow2.txt
  3. +4
    -4
      tests/qemu-iotests/031.out
  4. +2
    -2
      tests/qemu-iotests/036.out
  5. +7
    -7
      tests/qemu-iotests/061.out

+ 11
- 1
block/qcow2.c View File

@ -2822,7 +2822,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,
@ -2843,6 +2843,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,


+ 2
- 1
docs/interop/qcow2.txt View File

@ -138,7 +138,8 @@ in the description of a field.
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.


+ 4
- 4
tests/qemu-iotests/031.out View File

@ -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:


+ 2
- 2
tests/qemu-iotests/036.out View File

@ -58,7 +58,7 @@ header_length 104
Header extension:
magic 0x6803f857
length 192
length 288
data <binary>
@ -86,7 +86,7 @@ header_length 104
Header extension:
magic 0x6803f857
length 192
length 288
data <binary>
*** done

+ 7
- 7
tests/qemu-iotests/061.out View File

@ -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…
Cancel
Save