提交 8502b4b0 编写于 作者: P Peter Krempa

qemuDomainBlockPivot: Handle merging of bitmaps when pivoting an active block-commit

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: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NEric Blake <eblake@redhat.com>
上级 2b9091f0
......@@ -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;
}
break;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册