From 10f5ad9b5883f63bbeb06ee61fb8ca3c1a37e60f Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 4 May 2020 16:03:59 +0200 Subject: [PATCH] qemuBuildDiskCommandLine: Clarify logic around building -device for disks For 'SD' disks and floppies in the pre-blockdev era we don't format -device. Extract the logic so that it's more clear and add comments. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/qemu/qemu_command.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 1b3651a758..3f3e3b69a8 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2158,20 +2158,26 @@ qemuBuildDiskCommandLine(virCommandPtr cmd, if (qemuBuildDiskSourceCommandLine(cmd, disk, qemuCaps) < 0) return -1; - if (!qemuDiskBusIsSD(disk->bus)) { - if (disk->bus != VIR_DOMAIN_DISK_BUS_FDC || - virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) { - if (qemuCommandAddExtDevice(cmd, &disk->info) < 0) - return -1; + /* SD cards are currently instantiated via -drive if=sd, so the -device + * part must be skipped */ + if (qemuDiskBusIsSD(disk->bus)) + return 0; - virCommandAddArg(cmd, "-device"); + /* floppy devices are instantiated via -drive ...,if=none and bound to the + * controller via -global isa-fdc.driveA/B options in the pre-blockdev era */ + if (disk->bus == VIR_DOMAIN_DISK_BUS_FDC && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) + return 0; - if (!(optstr = qemuBuildDiskDeviceStr(def, disk, bootindex, - qemuCaps))) - return -1; - virCommandAddArg(cmd, optstr); - } - } + if (qemuCommandAddExtDevice(cmd, &disk->info) < 0) + return -1; + + virCommandAddArg(cmd, "-device"); + + if (!(optstr = qemuBuildDiskDeviceStr(def, disk, bootindex, + qemuCaps))) + return -1; + virCommandAddArg(cmd, optstr); return 0; }