404507
From 60d285eca3ab7003a7ebd03e3610616e0a657942 Mon Sep 17 00:00:00 2001
404507
Message-Id: <60d285eca3ab7003a7ebd03e3610616e0a657942@dist-git>
404507
From: Michal Privoznik <mprivozn@redhat.com>
404507
Date: Mon, 20 Nov 2017 11:08:51 +0100
404507
Subject: [PATCH] qemuBuildDriveDevStr: Prefer default aliases for IDE bus
404507
404507
https://bugzilla.redhat.com/show_bug.cgi?id=1434451
404507
404507
When testing user aliases it was discovered that for 440fx
404507
machine type which has default IDE bus builtin, domain cannot
404507
start if IDE controller has the user provided alias. This is
404507
because for 440fx we don't put the IDE controller onto the
404507
command line (since it is builtin) and therefore any device that
404507
is plugged onto the bus must use the default alias.
404507
404507
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
404507
(cherry picked from commit 9324f67a572f9b32f25bc088fb9f34e736edc612)
404507
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
404507
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
404507
---
404507
 src/qemu/qemu_command.c                               | 14 +++++++++++---
404507
 tests/qemuxml2argvdata/qemuxml2argv-user-aliases.args |  4 ++--
404507
 2 files changed, 13 insertions(+), 5 deletions(-)
404507
404507
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
404507
index aa7079229f..272ef610a3 100644
404507
--- a/src/qemu/qemu_command.c
404507
+++ b/src/qemu/qemu_command.c
404507
@@ -1947,9 +1947,17 @@ qemuBuildDriveDevStr(const virDomainDef *def,
404507
             virBufferAddLit(&opt, "ide-drive");
404507
         }
404507
 
404507
-        if (!(contAlias = virDomainControllerAliasFind(def, VIR_DOMAIN_CONTROLLER_TYPE_IDE,
404507
-                                                       disk->info.addr.drive.controller)))
404507
-           goto error;
404507
+        /* When domain has builtin IDE controller we don't put it onto cmd
404507
+         * line. Therefore we can't set its alias. In that case, use the
404507
+         * default one. */
404507
+        if (qemuDomainHasBuiltinIDE(def)) {
404507
+            contAlias = "ide";
404507
+        } else {
404507
+            if (!(contAlias = virDomainControllerAliasFind(def,
404507
+                                                           VIR_DOMAIN_CONTROLLER_TYPE_IDE,
404507
+                                                           disk->info.addr.drive.controller)))
404507
+                goto error;
404507
+        }
404507
         virBufferAsprintf(&opt, ",bus=%s.%d,unit=%d",
404507
                           contAlias,
404507
                           disk->info.addr.drive.bus,
404507
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-user-aliases.args b/tests/qemuxml2argvdata/qemuxml2argv-user-aliases.args
404507
index 62fbd567b1..1719c1bc88 100644
404507
--- a/tests/qemuxml2argvdata/qemuxml2argv-user-aliases.args
404507
+++ b/tests/qemuxml2argvdata/qemuxml2argv-user-aliases.args
404507
@@ -44,8 +44,8 @@ id=drive-ua-myEncryptedDisk1 \
404507
 id=ua-myEncryptedDisk1 \
404507
 -drive file=/home/zippy/tmp/install-amd64-minimal-20140619.iso,format=raw,\
404507
 if=none,media=cdrom,id=drive-ua-WhatAnAwesomeCDROM,readonly=on,cache=none \
404507
--device ide-drive,bus=ua-DoesAnybodyStillUseIDE.1,unit=0,\
404507
-drive=drive-ua-WhatAnAwesomeCDROM,id=ua-WhatAnAwesomeCDROM \
404507
+-device ide-drive,bus=ide.1,unit=0,drive=drive-ua-WhatAnAwesomeCDROM,\
404507
+id=ua-WhatAnAwesomeCDROM \
404507
 -device virtio-net-pci,vlan=0,id=ua-CheckoutThisNIC,mac=52:54:00:d6:c0:0b,\
404507
 bus=pci.0,addr=0x3 \
404507
 -net tap,fd=3,vlan=0,name=hostua-CheckoutThisNIC \
404507
-- 
404507
2.15.0
404507