#include "qemu_domain.h"
#include "qemu_alias.h"
#include "qemu_security.h"
+#include "qemu_process.h"
#include "storage_source.h"
#include "viralloc.h"
virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY) &&
virStorageSourceHasBacking(disk->mirror)) {
+ if (qemuProcessPrepareHostStorageSourceChain(vm, disk->mirror->backingStore) < 0)
+ return -1;
+
if (!(chainattachdata = qemuBuildStorageSourceChainAttachPrepareBlockdev(disk->mirror->backingStore)))
return -1;
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY)) {
g_autoptr(virStorageSource) terminator = virStorageSourceNew();
+ if (qemuProcessPrepareHostStorageSource(vm, mirror) < 0)
+ goto endjob;
+
if (!(data = qemuBuildStorageSourceChainAttachPrepareBlockdevTop(mirror,
terminator)))
goto endjob;
} else {
+ if (qemuProcessPrepareHostStorageSourceChain(vm, mirror) < 0)
+ goto endjob;
+
if (!(data = qemuBuildStorageSourceChainAttachPrepareBlockdev(mirror)))
goto endjob;
}
if (mirror_shallow) {
/* if external backing store is populated we'll need to open it */
if (virStorageSourceHasBacking(mirror)) {
+ if (qemuProcessPrepareHostStorageSourceChain(vm, mirror->backingStore) < 0)
+ goto endjob;
+
if (!(data = qemuBuildStorageSourceChainAttachPrepareBlockdev(mirror->backingStore)))
goto endjob;
mirrorBacking = mirror->backingStore;
}
+ if (qemuProcessPrepareHostStorageSource(vm, mirror) < 0)
+ goto endjob;
+
if (!(crdata = qemuBuildStorageSourceChainAttachPrepareBlockdevTop(mirror,
mirrorBacking)))
goto endjob;