Currently, startupPolicy='requisite' was determining cold boot
by migrateForm != NULL. That means, if domain was started up
with migrateForm set we didn't require disk source path and allowed
it to be dropped. However, on snapshot-revert domain wasn't migrated
but according to documentation, requisite should drop disk source
as well.
---
Related BZ:
https://bugzilla.redhat.com/show_bug.cgi?id=798938
src/qemu/qemu_driver.c | 16 +++++++++-------
src/qemu/qemu_migration.c | 2 +-
src/qemu/qemu_process.c | 3 ++-
src/qemu/qemu_process.h | 1 +
4 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index ddb381a..b17b52c 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1358,7 +1358,7 @@ static virDomainPtr qemudDomainCreate(virConnectPtr conn, const char
*xml,
if (qemuDomainObjBeginJobWithDriver(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup; /* XXXX free the 'vm' we created ? */
- if (qemuProcessStart(conn, driver, vm, NULL,
+ if (qemuProcessStart(conn, driver, vm, NULL, true,
(flags & VIR_DOMAIN_START_PAUSED) != 0,
(flags & VIR_DOMAIN_START_AUTODESTROY) != 0,
-1, NULL, NULL, VIR_NETDEV_VPORT_PROFILE_OP_CREATE) < 0) {
@@ -4107,8 +4107,9 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
}
/* Set the migration source and start it up. */
- ret = qemuProcessStart(conn, driver, vm, "stdio", true,
- false, *fd, path, NULL, VIR_NETDEV_VPORT_PROFILE_OP_RESTORE);
+ ret = qemuProcessStart(conn, driver, vm, "stdio", false, true,
+ false, *fd, path, NULL,
+ VIR_NETDEV_VPORT_PROFILE_OP_RESTORE);
if (intermediatefd != -1) {
if (ret < 0) {
@@ -4709,8 +4710,9 @@ qemuDomainObjStart(virConnectPtr conn,
}
}
- ret = qemuProcessStart(conn, driver, vm, NULL, start_paused,
- autodestroy, -1, NULL, NULL,
VIR_NETDEV_VPORT_PROFILE_OP_CREATE);
+ ret = qemuProcessStart(conn, driver, vm, NULL, true, start_paused,
+ autodestroy, -1, NULL, NULL,
+ VIR_NETDEV_VPORT_PROFILE_OP_CREATE);
virDomainAuditStart(vm, "booted", ret >= 0);
if (ret >= 0) {
virDomainEventPtr event =
@@ -10788,7 +10790,7 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr
snapshot,
virDomainObjAssignDef(vm, config, false);
rc = qemuProcessStart(snapshot->domain->conn, driver, vm, NULL,
- true, false, -1, NULL, snap,
+ false, true, false, -1, NULL, snap,
VIR_NETDEV_VPORT_PROFILE_OP_CREATE);
virDomainAuditStart(vm, "from-snapshot", rc >= 0);
detail = VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT;
@@ -10878,7 +10880,7 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr
snapshot,
if (event)
qemuDomainEventQueue(driver, event);
rc = qemuProcessStart(snapshot->domain->conn, driver, vm, NULL,
- paused, false, -1, NULL, NULL,
+ false, paused, false, -1, NULL, NULL,
VIR_NETDEV_VPORT_PROFILE_OP_CREATE);
virDomainAuditStart(vm, "from-snapshot", rc >= 0);
if (rc < 0) {
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 77d40c0..92d046a 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -1229,7 +1229,7 @@ qemuMigrationPrepareAny(struct qemud_driver *driver,
/* Start the QEMU daemon, with the same command-line arguments plus
* -incoming $migrateFrom
*/
- if (qemuProcessStart(dconn, driver, vm, migrateFrom, true,
+ if (qemuProcessStart(dconn, driver, vm, migrateFrom, false, true,
true, dataFD[0], NULL, NULL,
VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_START) < 0) {
virDomainAuditStart(vm, "migrated", false);
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 7b99814..502de89 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3072,6 +3072,7 @@ int qemuProcessStart(virConnectPtr conn,
struct qemud_driver *driver,
virDomainObjPtr vm,
const char *migrateFrom,
+ bool cold_boot,
bool start_paused,
bool autodestroy,
int stdin_fd,
@@ -3227,7 +3228,7 @@ int qemuProcessStart(virConnectPtr conn,
goto cleanup;
VIR_DEBUG("Checking for CDROM and floppy presence");
- if (qemuDomainCheckDiskPresence(driver, vm, migrateFrom != NULL) < 0)
+ if (qemuDomainCheckDiskPresence(driver, vm, cold_boot) < 0)
goto cleanup;
VIR_DEBUG("Setting up domain cgroup (if required)");
diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h
index 2c1d0b5..761db6f 100644
--- a/src/qemu/qemu_process.h
+++ b/src/qemu/qemu_process.h
@@ -48,6 +48,7 @@ int qemuProcessStart(virConnectPtr conn,
struct qemud_driver *driver,
virDomainObjPtr vm,
const char *migrateFrom,
+ bool cold_boot,
bool start_paused,
bool autodestroy,
int stdin_fd,
--
1.7.8.5