Commit f67cf661 authored by Eric Blake's avatar Eric Blake Committed by John Snow
Browse files

dirty-bitmap: Expose persistent flag to 'query-block'



Since qemu currently doesn't flush persistent bitmaps to disk until
shutdown (which might be MUCH later), it's useful if 'query-block'
at least shows WHICH bitmaps will (eventually) make it to persistent
storage.  Update affected iotests.

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: default avatarJohn Snow <jsnow@redhat.com>
Message-id: 20190204210512.27458-1-eblake@redhat.com
Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
parent 2e68b862
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -440,6 +440,7 @@ BlockDirtyInfoList *bdrv_query_dirty_bitmaps(BlockDriverState *bs)
        info->has_name = !!bm->name;
        info->name = g_strdup(bm->name);
        info->status = bdrv_dirty_bitmap_status(bm);
        info->persistent = bm->persistent;
        entry->value = info;
        *plist = entry;
        plist = &entry->next;
+4 −1
Original line number Diff line number Diff line
@@ -450,11 +450,14 @@
#
# @status: current status of the dirty bitmap (since 2.4)
#
# @persistent: true if the bitmap will eventually be flushed to persistent
#              storage (since 4.0)
#
# Since: 1.3
##
{ 'struct': 'BlockDirtyInfo',
  'data': {'*name': 'str', 'count': 'int', 'granularity': 'uint32',
           'status': 'DirtyBitmapStatus'} }
           'status': 'DirtyBitmapStatus', 'persistent': 'bool' } }

##
# @Qcow2BitmapInfoFlags:
+1 −0
Original line number Diff line number Diff line
@@ -350,6 +350,7 @@ class TestIncrementalBackup(TestIncrementalBackupBase):
        self.assert_qmp(result, 'return[0]/dirty-bitmaps[0]/count', 458752)
        self.assert_qmp(result, 'return[0]/dirty-bitmaps[0]/granularity', 65536)
        self.assert_qmp(result, 'return[0]/dirty-bitmaps[0]/status', 'active')
        self.assert_qmp(result, 'return[0]/dirty-bitmaps[0]/persistent', False)

        # Prepare a cluster_size=128k backup target without a backing file.
        (target, _) = bitmap0.new_target()
+14 −0
Original line number Diff line number Diff line
@@ -25,12 +25,14 @@ write -P0xcd 0x3ff0000 64k
        "count": 262144,
        "granularity": 65536,
        "name": "bitmapB",
        "persistent": false,
        "status": "active"
      },
      {
        "count": 262144,
        "granularity": 65536,
        "name": "bitmapA",
        "persistent": false,
        "status": "active"
      }
    ]
@@ -85,12 +87,14 @@ write -P0xcd 0x3ff0000 64k
        "count": 262144,
        "granularity": 65536,
        "name": "bitmapB",
        "persistent": false,
        "status": "active"
      },
      {
        "count": 262144,
        "granularity": 65536,
        "name": "bitmapA",
        "persistent": false,
        "status": "active"
      }
    ]
@@ -183,18 +187,21 @@ write -P0xea 0x3fe0000 64k
        "count": 393216,
        "granularity": 65536,
        "name": "bitmapC",
        "persistent": false,
        "status": "disabled"
      },
      {
        "count": 262144,
        "granularity": 65536,
        "name": "bitmapB",
        "persistent": false,
        "status": "disabled"
      },
      {
        "count": 458752,
        "granularity": 65536,
        "name": "bitmapA",
        "persistent": false,
        "status": "disabled"
      }
    ]
@@ -247,18 +254,21 @@ write -P0xea 0x3fe0000 64k
        "count": 393216,
        "granularity": 65536,
        "name": "bitmapC",
        "persistent": false,
        "status": "disabled"
      },
      {
        "count": 262144,
        "granularity": 65536,
        "name": "bitmapB",
        "persistent": false,
        "status": "disabled"
      },
      {
        "count": 458752,
        "granularity": 65536,
        "name": "bitmapA",
        "persistent": false,
        "status": "disabled"
      }
    ]
@@ -304,24 +314,28 @@ write -P0xea 0x3fe0000 64k
        "count": 458752,
        "granularity": 65536,
        "name": "bitmapD",
        "persistent": false,
        "status": "disabled"
      },
      {
        "count": 393216,
        "granularity": 65536,
        "name": "bitmapC",
        "persistent": false,
        "status": "disabled"
      },
      {
        "count": 262144,
        "granularity": 65536,
        "name": "bitmapB",
        "persistent": false,
        "status": "disabled"
      },
      {
        "count": 458752,
        "granularity": 65536,
        "name": "bitmapA",
        "persistent": false,
        "status": "disabled"
      }
    ]