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:
parent
a9e750e1ce
commit
aef87784f9
|
@ -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'
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue