qcow2: QcowHeaderExtension print names for extension magics

Suggested-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20200606081806.23897-13-vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2020-06-06 11:18:05 +03:00 committed by Eric Blake
parent a9e750e1ce
commit aef87784f9
4 changed files with 36 additions and 21 deletions

View File

@ -25,7 +25,7 @@ refcount_order 4
header_length 72 header_length 72
Header extension: Header extension:
magic 0x12345678 magic 0x12345678 (<unknown>)
length 31 length 31
data 'This is a test header extension' data 'This is a test header extension'
@ -53,7 +53,7 @@ refcount_order 4
header_length 72 header_length 72
Header extension: Header extension:
magic 0x12345678 magic 0x12345678 (<unknown>)
length 31 length 31
data 'This is a test header extension' data 'This is a test header extension'
@ -81,12 +81,12 @@ refcount_order 4
header_length 72 header_length 72
Header extension: Header extension:
magic 0xe2792aca magic 0xe2792aca (Backing format)
length 11 length 11
data 'host_device' data 'host_device'
Header extension: Header extension:
magic 0x12345678 magic 0x12345678 (<unknown>)
length 31 length 31
data 'This is a test header extension' data 'This is a test header extension'
@ -116,12 +116,12 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
Header extension: Header extension:
magic 0x12345678 magic 0x12345678 (<unknown>)
length 31 length 31
data 'This is a test header extension' data 'This is a test header extension'
@ -149,12 +149,12 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
Header extension: Header extension:
magic 0x12345678 magic 0x12345678 (<unknown>)
length 31 length 31
data 'This is a test header extension' data 'This is a test header extension'
@ -182,17 +182,17 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0xe2792aca magic 0xe2792aca (Backing format)
length 11 length 11
data 'host_device' data 'host_device'
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
Header extension: Header extension:
magic 0x12345678 magic 0x12345678 (<unknown>)
length 31 length 31
data 'This is a test header extension' data 'This is a test header extension'

View File

@ -25,7 +25,7 @@ incompatible_features []
compatible_features [] compatible_features []
autoclear_features [63] autoclear_features [63]
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
@ -37,7 +37,7 @@ incompatible_features []
compatible_features [] compatible_features []
autoclear_features [] autoclear_features []
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>

View File

@ -25,7 +25,7 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
@ -83,7 +83,7 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
@ -139,7 +139,7 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
@ -194,7 +194,7 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
@ -263,7 +263,7 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
@ -325,7 +325,7 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>
@ -354,7 +354,7 @@ refcount_order 4
header_length 112 header_length 112
Header extension: Header extension:
magic 0x6803f857 magic 0x6803f857 (Feature table)
length 336 length 336
data <binary> data <binary>

View File

@ -39,6 +39,12 @@ class Flags64(Qcow2Field):
return str(bits) return str(bits)
class Enum(Qcow2Field):
def __str__(self):
return f'{self.value:#x} ({self.mapping.get(self.value, "<unknown>")})'
class Qcow2StructMeta(type): class Qcow2StructMeta(type):
# Mapping from c types to python struct format # Mapping from c types to python struct format
@ -99,8 +105,17 @@ class Qcow2Struct(metaclass=Qcow2StructMeta):
class QcowHeaderExtension(Qcow2Struct): class QcowHeaderExtension(Qcow2Struct):
class Magic(Enum):
mapping = {
0xe2792aca: 'Backing format',
0x6803f857: 'Feature table',
0x0537be77: 'Crypto header',
0x23852875: 'Bitmaps',
0x44415441: 'Data file'
}
fields = ( fields = (
('u32', '{:#x}', 'magic'), ('u32', Magic, 'magic'),
('u32', '{}', 'length') ('u32', '{}', 'length')
# length bytes of data follows # length bytes of data follows
# then padding to next multiply of 8 # then padding to next multiply of 8