[PATCH v2 17/19] qemuDomainBlockPivot: Handle merging of bitmaps when pivoting an active block-commit

Eric Blake eblake at redhat.com
Wed Mar 11 21:42:19 UTC 2020


On 3/11/20 7:56 AM, Peter Krempa wrote:
> Active layer block commit makes the 'base' image the new top image of
> the disk after it finishes. This means that all bitmap operations need
> to be handled prior to this happening as we'd lose writes otherwise.
> 
> The ideal place is to handle it when pivoting to the new image as only
> guest-writes would be happening after this point.
> 
> Use qemuBlockBitmapsHandleCommitFinish to calculate the merging
> transaction.
> 
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
>   src/qemu/qemu_driver.c | 17 +++++++++++++++++
>   1 file changed, 17 insertions(+)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 628fe9b107..3afdecda1b 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -17301,6 +17301,23 @@ qemuDomainBlockPivot(virQEMUDriverPtr driver,
>           break;
> 
>       case QEMU_BLOCKJOB_TYPE_ACTIVE_COMMIT:
> +        /* we technically don't need reopen here, but we couldn't prepare
> +         * the bitmaps if it wasn't present thus must skip this */
> +        if (blockdev &&
> +            virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN)) {
> +            g_autoptr(virHashTable) blockNamedNodeData = NULL;
> +
> +            if (!(blockNamedNodeData = qemuBlockGetNamedNodeData(vm, QEMU_ASYNC_JOB_NONE)))
> +                return -1;
> +
> +            if (qemuBlockBitmapsHandleCommitFinish(job->data.commit.top,
> +                                                   job->data.commit.base,
> +                                                   blockNamedNodeData,
> +                                                   &actions,
> +                                                   job->data.commit.disabledBitmapsBase) < 0)
> +                return -1;
> +        }
> +

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