From 69582431a04c60395923c39689a034fe9b5ec7e1 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 11 Jul 2008 09:56:23 +0000 Subject: [PATCH] Fix booting QEMU off CDROM devices with -drive arg --- ChangeLog | 7 +++++ src/qemu_conf.c | 3 ++- .../qemuxml2argv-disk-drive-boot-cdrom.args | 1 + .../qemuxml2argv-disk-drive-boot-cdrom.xml | 26 +++++++++++++++++++ .../qemuxml2argv-disk-drive-boot-disk.args | 1 + .../qemuxml2argv-disk-drive-boot-disk.xml | 26 +++++++++++++++++++ tests/qemuxml2argvtest.c | 4 +++ 7 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-cdrom.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-cdrom.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-disk.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-disk.xml diff --git a/ChangeLog b/ChangeLog index 56ef667ec4..c7199615fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Jul 11 10:55:59 BST 2008 Daniel P. Berrange + + * src/qemu_conf.c: Fix booting off CDROM devices + * tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-*, + tests/qemuxml2argvtest.c: New test cases for booting off + CDROM with QEMU + Fri Jul 11 10:50:59 BST 2008 Daniel P. Berrange * libvirt.spec.in, qemud/Makefile.am: Rename installed polkit diff --git a/src/qemu_conf.c b/src/qemu_conf.c index 4b8c01ecae..82797aa321 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -2624,7 +2624,8 @@ int qemudBuildCommandLine(virConnectPtr conn, disk->src, qemudBusIdToName(disk->bus, 1), media ? media : "", idx, - bootable ? ",boot=on" : ""); + bootable && disk->device == QEMUD_DISK_DISK + ? ",boot=on" : ""); ADD_ARG_LIT("-drive"); ADD_ARG_LIT(opt); diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-cdrom.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-cdrom.args new file mode 100644 index 0000000000..22fe65cb39 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-cdrom.args @@ -0,0 +1 @@ +/usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot d -drive file=/dev/HostVG/QEMUGuest1,if=ide,index=0 -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,index=2 -net none -serial none -parallel none -usb \ No newline at end of file diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-cdrom.xml b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-cdrom.xml new file mode 100644 index 0000000000..fdbf2b8039 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-cdrom.xml @@ -0,0 +1,26 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219200 + 219200 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu + + + + + + + + + + diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-disk.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-disk.args new file mode 100644 index 0000000000..7f2c4ebafb --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-disk.args @@ -0,0 +1 @@ +/usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,index=0,boot=on -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,index=2 -net none -serial none -parallel none -usb \ No newline at end of file diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-disk.xml b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-disk.xml new file mode 100644 index 0000000000..b8ff06a7b0 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-boot-disk.xml @@ -0,0 +1,26 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219200 + 219200 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu + + + + + + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index be43bb58fa..336a113f1c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -158,6 +158,10 @@ mymain(int argc, char **argv) QEMUD_CMD_FLAG_DRIVE_BOOT); DO_TEST("disk-xenvbd", QEMUD_CMD_FLAG_DRIVE | QEMUD_CMD_FLAG_DRIVE_BOOT); + DO_TEST("disk-drive-boot-disk", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_DRIVE_BOOT); + DO_TEST("disk-drive-boot-cdrom", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_DRIVE_BOOT); DO_TEST("graphics-vnc", 0); DO_TEST("graphics-sdl", 0); DO_TEST("input-usbmouse", 0);