From 9cda91d6f6b887c6f06868f4d2fb16c288ae20d5 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 2 Jun 2016 15:32:00 +0200 Subject: [PATCH] qemu: process: Call disk startup policy check after cloning domain def In commit 1e38ef72 the disk startup policy check was moved prior to the call to virDomainObjSetDefTransient which dropped the disk from the config rather than the def to be started which is a bug. Additionally we'd not report the disk change event for this since the disk aliases were not set at that point. Finally 'volume' based disks would not work with startup policy too. Fix it by moving it back after the definition is copied, aliases are assigned and disk sources are translated. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1341415 --- src/qemu/qemu_process.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 84454ab97b..87c1fe81de 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4344,10 +4344,6 @@ qemuProcessStartValidate(virQEMUDriverPtr driver, } } - if (qemuDomainCheckDiskPresence(driver, vm, - flags & VIR_QEMU_PROCESS_START_COLD) < 0) - return -1; - VIR_DEBUG("Checking domain and device security labels"); if (virSecurityManagerCheckAllLabel(driver->securityManager, vm->def) < 0) return -1; @@ -4870,6 +4866,14 @@ qemuProcessPrepareDomain(virConnectPtr conn, goto cleanup; } + /* drop possibly missing disks from the definition. This needs to happen + * after the def is copied, aliases are set and disk sources are translated */ + if (!(flags & VIR_QEMU_PROCESS_START_PRETEND)) { + if (qemuDomainCheckDiskPresence(driver, vm, + flags & VIR_QEMU_PROCESS_START_COLD) < 0) + goto cleanup; + } + VIR_DEBUG("Create domain masterKey"); if (qemuDomainMasterKeyCreate(vm) < 0) goto cleanup;