[PATCH 27/32] qemublocktest: Add 'basic' tests for commit bitmap handling

Eric Blake eblake at redhat.com
Fri Jun 19 14:36:22 UTC 2020


On 6/15/20 12:10 PM, Peter Krempa wrote:
> In the 'basic case we have few bitmaps in only the top layer. Simulate

stray or missing '

> commit into the backing of the top layer and also 2 levels deep.
> 
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
>   tests/qemublocktest.c                         |   4 +
>   .../bitmapblockcommit/basic-1-2               | 145 ++++++++++++++++++
>   .../bitmapblockcommit/basic-1-3               | 145 ++++++++++++++++++
>   .../bitmapblockcommit/basic-2-3               |   1 +
>   4 files changed, 295 insertions(+)
>   create mode 100644 tests/qemublocktestdata/bitmapblockcommit/basic-1-2
>   create mode 100644 tests/qemublocktestdata/bitmapblockcommit/basic-1-3
>   create mode 100644 tests/qemublocktestdata/bitmapblockcommit/basic-2-3
> 

> +++ b/tests/qemublocktestdata/bitmapblockcommit/basic-1-2
> @@ -0,0 +1,145 @@
> +merge bitmpas:

bitmaps (fixing the source of the typo probably has ripple effects in 
expected output, and might even be in a prior patch...)

> +[
> +  {
> +    "type": "block-dirty-bitmap-add",
> +    "data": {
> +      "node": "libvirt-2-format",
> +      "name": "a",
> +      "persistent": true,
> +      "disabled": false,
> +      "granularity": 65536
> +    }
> +  },
> +  {
> +    "type": "block-dirty-bitmap-merge",
> +    "data": {
> +      "node": "libvirt-2-format",
> +      "target": "a",
> +      "bitmaps": [
> +        {
> +          "node": "libvirt-1-format",
> +          "name": "a"
> +        },
> +        {
> +          "node": "libvirt-2-format",
> +          "name": "libvirt-tmp-activewrite"
> +        }

Hmm, so you are merging the 'libvirt-tmp-activewrite' bitmap into bitmap 
(libvirt-2-format,a)...

> +      ]
> +    }
> +  },
> +  {
> +    "type": "block-dirty-bitmap-add",
> +    "data": {
> +      "node": "libvirt-2-format",
> +      "name": "b",
> +      "persistent": true,
> +      "disabled": false,
> +      "granularity": 65536
> +    }
> +  },
> +  {
> +    "type": "block-dirty-bitmap-merge",
> +    "data": {
> +      "node": "libvirt-2-format",
> +      "target": "b",
> +      "bitmaps": [
> +        {
> +          "node": "libvirt-1-format",
> +          "name": "b"
> +        },
> +        {
> +          "node": "libvirt-2-format",
> +          "name": "libvirt-tmp-activewrite"

...and (libvirt-2-format,b) simultaneously.  But that still makes sense: 
if libvirt-tmp-activewrite contains bits for everything that has changed 
since a certain point in time, and both bitmap a and b will be left 
active when the operation is done, they will both need those same bits 
merged in.

It took me a while to see why you were reusing a bitmap as a source to 
more than one destination, but it looks correct.  With the typo fixed,

Reviewed-by: Eric Blake <eblake at redhat.com>

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org




More information about the libvir-list mailing list