qcow2_format.py: dump bitmap flags in human readable way.
authorAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Thu, 6 Aug 2020 19:35:50 +0000 (22:35 +0300)
committerEric Blake <eblake@redhat.com>
Fri, 21 Aug 2020 13:56:09 +0000 (08:56 -0500)
Introduce the class BitmapFlags that parses a bitmap flags mask.

Suggested-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <1596742557-320265-5-git-send-email-andrey.shinkevich@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
tests/qemu-iotests/qcow2_format.py

index d4a9974537587f062d7e778d38e4248f632a7b9e..b4473442c9d40487ffa7194c258760db557afef0 100644 (file)
@@ -40,6 +40,22 @@ class Flags64(Qcow2Field):
         return str(bits)
 
 
+class BitmapFlags(Qcow2Field):
+
+    flags = {
+        0x1: 'in-use',
+        0x2: 'auto'
+    }
+
+    def __str__(self):
+        bits = []
+        for bit in range(64):
+            flag = self.value & (1 << bit)
+            if flag:
+                bits.append(self.flags.get(flag, f'bit-{bit}'))
+        return f'{self.value:#x} ({bits})'
+
+
 class Enum(Qcow2Field):
 
     def __str__(self):