const char *host,
int port,
unsigned long long mirror_speed,
- unsigned int mirror_flags,
+ unsigned int mirror_shallow,
const char *tlsAlias)
{
VIR_AUTOPTR(qemuBlockStorageSourceAttachData) data = NULL;
int mon_ret = 0;
int ret = -1;
VIR_AUTOUNREF(virStorageSourcePtr) copysrc = NULL;
+ unsigned int mirror_flags = 0;
+
+ if (mirror_shallow)
+ mirror_flags |= VIR_DOMAIN_BLOCK_REBASE_SHALLOW;
VIR_DEBUG("starting blockdev mirror for disk=%s to host=%s", diskAlias, host);
const char *host,
int port,
unsigned long long mirror_speed,
- unsigned int mirror_flags)
+ bool mirror_shallow)
{
char *nbd_dest = NULL;
int mon_ret;
int ret = -1;
+ unsigned int mirror_flags = VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT;
+
+ if (mirror_shallow)
+ mirror_flags |= VIR_DOMAIN_BLOCK_REBASE_SHALLOW;
if (strchr(host, ':')) {
if (virAsprintf(&nbd_dest, "nbd:[%s]:%d:exportname=%s",
const char *host,
int port,
unsigned long long mirror_speed,
- unsigned int mirror_flags,
+ bool mirror_shallow,
const char *tlsAlias,
unsigned int flags)
{
disk, diskAlias,
host, port,
mirror_speed,
- mirror_flags,
+ mirror_shallow,
tlsAlias);
} else {
rc = qemuMigrationSrcNBDStorageCopyDriveMirror(driver, vm, diskAlias,
host, port,
mirror_speed,
- mirror_flags);
+ mirror_shallow);
}
if (rc < 0)
int port;
size_t i;
unsigned long long mirror_speed = speed;
- unsigned int mirror_flags = VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT;
+ bool mirror_shallow = *migrate_flags & QEMU_MONITOR_MIGRATE_NON_SHARED_INC;
int rv;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
port = mig->nbd->port;
mig->nbd->port = 0;
- if (*migrate_flags & QEMU_MONITOR_MIGRATE_NON_SHARED_INC)
- mirror_flags |= VIR_DOMAIN_BLOCK_REBASE_SHALLOW;
-
for (i = 0; i < vm->def->ndisks; i++) {
virDomainDiskDefPtr disk = vm->def->disks[i];
continue;
if (qemuMigrationSrcNBDStorageCopyOne(driver, vm, disk, host, port,
- mirror_speed, mirror_flags,
+ mirror_speed, mirror_shallow,
tlsAlias, flags) < 0)
goto cleanup;