[libvirt] [PATCH 1/2] Fix order of disks and controllers

Commit 2d6adabd53c8f1858191d521dc9b4948d1205955 replaced qsorting disk and controller devices with inserting them at the right position. That was to fix unnecessary reordering of devices. However, when parsing domain XML devices are just taken in the order in which they appear in the XML since. Use the correct insertion algorithm to honor device target. --- src/conf/domain_conf.c | 4 +- .../qemuxml2argvdata/qemuxml2argv-boot-order.args | 35 ++++++++++++------- tests/qemuxml2argvdata/qemuxml2argv-boot-order.xml | 14 ++++---- tests/xmconfigdata/test-escape-paths.cfg | 2 +- tests/xmconfigdata/test-escape-paths.xml | 10 +++--- 5 files changed, 37 insertions(+), 28 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b406202..48ed7eb 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5883,7 +5883,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, if (!disk) goto error; - def->disks[def->ndisks++] = disk; + virDomainDiskInsertPreAlloced(def, disk); } VIR_FREE(nodes); @@ -5899,7 +5899,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, if (!controller) goto error; - def->controllers[def->ncontrollers++] = controller; + virDomainControllerInsertPreAlloced(def, controller); } VIR_FREE(nodes); diff --git a/tests/qemuxml2argvdata/qemuxml2argv-boot-order.args b/tests/qemuxml2argvdata/qemuxml2argv-boot-order.args index 23249f3..14367b1 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-boot-order.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-boot-order.args @@ -1,13 +1,22 @@ -LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \ -pc -m 214 -smp 1 -nographic -nodefaults -monitor unix:/tmp/test-monitor,server,\ -nowait -no-acpi -drive file=/dev/HostVG/QEMUGuest1,if=none,id=drive-ide0-0-0 \ --device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive \ -file=sheepdog:example.org:6000:image,if=none,id=drive-virtio-disk0 -device \ -virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,\ -bootindex=3 -drive file=/root/boot.iso,if=none,media=cdrom,id=drive-ide0-1-0 \ --device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,\ -bootindex=1 -drive file=/dev/null,if=none,id=drive-fdc0-0-1 -global \ -isa-fdc.driveB=drive-fdc0-0-1 -global isa-fdc.bootindexB=4 -device \ -virtio-net-pci,vlan=0,id=net0,mac=00:11:22:33:44:55,bus=pci.0,addr=0x3,\ -bootindex=2 -net user,vlan=0,name=hostnet0 -usb -device virtio-balloon-pci,\ -id=balloon0,bus=pci.0,addr=0x5 +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu \ +-S \ +-M pc \ +-m 214 \ +-smp 1 \ +-nographic \ +-nodefaults \ +-monitor unix:/tmp/test-monitor,server,nowait \ +-no-acpi \ +-drive file=/dev/HostVG/QEMUGuest1,if=none,id=drive-ide0-0-0 \ +-device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \ +-drive file=/root/boot.iso,if=none,media=cdrom,id=drive-ide0-1-0 \ +-device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=1 \ +-drive file=sheepdog:example.org:6000:image,if=none,id=drive-virtio-disk0 \ +-device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=3 \ +-drive file=/dev/null,if=none,id=drive-fdc0-0-1 \ +-global isa-fdc.driveB=drive-fdc0-0-1 \ +-global isa-fdc.bootindexB=4 \ +-device virtio-net-pci,vlan=0,id=net0,mac=00:11:22:33:44:55,bus=pci.0,addr=0x3,bootindex=2 \ +-net user,vlan=0,name=hostnet0 \ +-usb \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-boot-order.xml b/tests/qemuxml2argvdata/qemuxml2argv-boot-order.xml index ba8a9b2..0022c92 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-boot-order.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-boot-order.xml @@ -18,6 +18,13 @@ <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' unit='0'/> </disk> + <disk type='file' device='cdrom'> + <source file='/root/boot.iso'/> + <target dev='hdc' bus='ide'/> + <boot order='1'/> + <readonly/> + <address type='drive' controller='0' bus='1' unit='0'/> + </disk> <disk type='network' device='disk'> <driver name='qemu' type='raw'/> <source protocol='sheepdog' name='image'> @@ -26,13 +33,6 @@ <target dev='vda' bus='virtio'/> <boot order='3'/> </disk> - <disk type='file' device='cdrom'> - <source file='/root/boot.iso'/> - <target dev='hdc' bus='ide'/> - <boot order='1'/> - <readonly/> - <address type='drive' controller='0' bus='1' unit='0'/> - </disk> <disk type='file' device='floppy'> <driver name='qemu' type='raw'/> <source file='/dev/null'/> diff --git a/tests/xmconfigdata/test-escape-paths.cfg b/tests/xmconfigdata/test-escape-paths.cfg index e3e6db9..13be2a0 100644 --- a/tests/xmconfigdata/test-escape-paths.cfg +++ b/tests/xmconfigdata/test-escape-paths.cfg @@ -19,7 +19,7 @@ vnc = 1 vncunused = 1 vnclisten = "127.0.0.1" vncpasswd = "123poi" -disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso&test,hdc:cdrom,r", """phy:/dev/HostVG/XenGuest'",hdb,w""" ] +disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", """phy:/dev/HostVG/XenGuest'",hdb,w""", "file:/root/boot.iso&test,hdc:cdrom,r" ] vif = [ "mac=00:16:3e:66:92:9c,bridge=xenbr1,script=vif-bridge,model=e1000,type=ioemu" ] parallel = "none" serial = "none" diff --git a/tests/xmconfigdata/test-escape-paths.xml b/tests/xmconfigdata/test-escape-paths.xml index 13e6e29..9eaf90c 100644 --- a/tests/xmconfigdata/test-escape-paths.xml +++ b/tests/xmconfigdata/test-escape-paths.xml @@ -25,17 +25,17 @@ <source dev='/dev/HostVG/XenGuest2'/> <target dev='hda' bus='ide'/> </disk> + <disk type='block' device='disk'> + <driver name='phy'/> + <source dev='/dev/HostVG/XenGuest'"'/> + <target dev='hdb' bus='ide'/> + </disk> <disk type='file' device='cdrom'> <driver name='file'/> <source file='/root/boot.iso&test'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> - <disk type='block' device='disk'> - <driver name='phy'/> - <source dev='/dev/HostVG/XenGuest'"'/> - <target dev='hdb' bus='ide'/> - </disk> <interface type='bridge'> <mac address='00:16:3e:66:92:9c'/> <source bridge='xenbr1'/> -- 1.7.5.3

--- .../qemuxml2argvdata/qemuxml2argv-disk-order.args | 20 +++++++++++ tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml | 37 ++++++++++++++++++++ tests/qemuxml2argvtest.c | 2 + 3 files changed, 59 insertions(+), 0 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-order.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-order.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-order.args new file mode 100644 index 0000000..6483e5e --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-order.args @@ -0,0 +1,20 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu \ +-S \ +-M pc \ +-m 214 \ +-smp 1 \ +-nographic \ +-nodefaults \ +-monitor unix:/tmp/test-monitor,server,nowait \ +-no-acpi \ +-boot c \ +-drive file=/dev/HostVG/QEMUGuest1,if=none,id=drive-ide0-0-0 \ +-device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \ +-drive file=/dev/HostVG/QEMUGuest2,if=none,media=cdrom,id=drive-ide0-1-0 \ +-device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 \ +-drive file=/tmp/data.img,if=none,id=drive-virtio-disk0 \ +-device virtio-blk-pci,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,id=virtio-disk0 \ +-drive file=/tmp/logs.img,if=none,id=drive-virtio-disk1 \ +-device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk1,id=virtio-disk1 \ +-usb \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml b/tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml new file mode 100644 index 0000000..b07bbed --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml @@ -0,0 +1,37 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory>219136</memory> + <currentMemory>219136</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='cdrom'> + <source dev='/dev/HostVG/QEMUGuest2'/> + <target dev='hdc' bus='ide'/> + <readonly/> + </disk> + <disk type='file' device='disk'> + <source file='/tmp/logs.img'/> + <target dev='vdb' bus='virtio'/> + </disk> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + </disk> + <disk type='file' device='disk'> + <source file='/tmp/data.img'/> + <target dev='vda' bus='virtio'/> + </disk> + <controller type='ide' index='0'/> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index c9076e1..cbd9a5f 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -283,6 +283,8 @@ mymain(void) DO_TEST("disk-floppy", false, NONE); DO_TEST("disk-many", false, NONE); DO_TEST("disk-virtio", false, QEMU_CAPS_DRIVE, QEMU_CAPS_DRIVE_BOOT); + DO_TEST("disk-order", false, + QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_DRIVE_BOOT); DO_TEST("disk-xenvbd", false, QEMU_CAPS_DRIVE, QEMU_CAPS_DRIVE_BOOT); DO_TEST("disk-drive-boot-disk", false, QEMU_CAPS_DRIVE, QEMU_CAPS_DRIVE_BOOT); -- 1.7.5.3

On 06/01/2011 09:58 AM, Jiri Denemark wrote:
--- .../qemuxml2argvdata/qemuxml2argv-disk-order.args | 20 +++++++++++ tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml | 37 ++++++++++++++++++++ tests/qemuxml2argvtest.c | 2 + 3 files changed, 59 insertions(+), 0 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-order.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml
ACK series. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

On Wed, Jun 01, 2011 at 10:13:13 -0600, Eric Blake wrote:
On 06/01/2011 09:58 AM, Jiri Denemark wrote:
--- .../qemuxml2argvdata/qemuxml2argv-disk-order.args | 20 +++++++++++ tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml | 37 ++++++++++++++++++++ tests/qemuxml2argvtest.c | 2 + 3 files changed, 59 insertions(+), 0 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-order.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml
ACK series.
Pushed, thanks. Jirka

Hello, On Wednesday 01 June 2011 17:58:32 Jiri Denemark wrote:
Commit 2d6adabd53c8f1858191d521dc9b4948d1205955 replaced qsorting disk and controller devices with inserting them at the right position. That was to fix unnecessary reordering of devices. However, when parsing domain XML devices are just taken in the order in which they appear in the XML since. Use the correct insertion algorithm to honor device target.
This commit (c1a98d88255197a8446d08c0b1589861660e9064) broke the Xen-PC-PyGrub case (see also "[PATCH 3/4] xen: fix PyGrub boot device order" from Oct 12th 2011, which worked only for preious versions of libvirt): XenD used the order of disks on domain-to-native to set the bootable flag to 1 only for the first device. This flag is then used on domain-start to determine the disk, which gets passed ty PyGrub to extract the Kernel and IniRD. Now the order is determined by /domain/devices/disk/target/@dev, which makes chaning the order impossible without also changing the devices names, which are visible to the VM! The Nr. 1 use-case for this is chaning the boot-order after installing from a PV-CDROM to the PV-disk. Since the Xen-PV-case has no BIOS bootable section, using /domain/os/boot/ here does not work. Either that libvirt needs to explicitly support Xens bootable flag (via /domain/devices/disk/boot/@order?), or this patch should be reverted. Comments? Sincerely Philipp -- Philipp Hahn Open Source Software Engineer hahn@univention.de Univention GmbH Linux for Your Business fon: +49 421 22 232- 0 Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99 http://www.univention.de/

On Mon, Oct 31, 2011 at 10:52:33AM +0100, Philipp Hahn wrote:
Hello,
On Wednesday 01 June 2011 17:58:32 Jiri Denemark wrote:
Commit 2d6adabd53c8f1858191d521dc9b4948d1205955 replaced qsorting disk and controller devices with inserting them at the right position. That was to fix unnecessary reordering of devices. However, when parsing domain XML devices are just taken in the order in which they appear in the XML since. Use the correct insertion algorithm to honor device target.
This commit (c1a98d88255197a8446d08c0b1589861660e9064) broke the Xen-PC-PyGrub case (see also "[PATCH 3/4] xen: fix PyGrub boot device order" from Oct 12th 2011, which worked only for preious versions of libvirt): XenD used the order of disks on domain-to-native to set the bootable flag to 1 only for the first device. This flag is then used on domain-start to determine the disk, which gets passed ty PyGrub to extract the Kernel and IniRD. Now the order is determined by /domain/devices/disk/target/@dev, which makes chaning the order impossible without also changing the devices names, which are visible to the VM! The Nr. 1 use-case for this is chaning the boot-order after installing from a PV-CDROM to the PV-disk. Since the Xen-PV-case has no BIOS bootable section, using /domain/os/boot/ here does not work.
Either that libvirt needs to explicitly support Xens bootable flag (via /domain/devices/disk/boot/@order?), or this patch should be reverted. Comments?
We should support the 'bootable' flag regardless. We gained an explicit <boot order='1'/> in the <disk> element, which could easily be wired up to Xen's boot order flag. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

When PyGrub is used as the bootloader in Xen, it gets passed the first bootable disk. Xend supports a "bootable"-flag for this, which was previously unused. In commit c2969ec7aec5c40519aadf422ab5c47a21938bff the bootable=1 flag was used to re-order the disks when converting from SEXPR to XML, such that on re-definition Xend would mark the first disk as bootable. This got broken with commit c1a98d88255197a8446d08c0b1589861660e9064, which reorders all disks according to their target-name, making it impossible to change the boot order without changing the device names. When converting from Xen-sexpr to xml, Xens boolean bootable-flag is converted to libvirts cardinal bootIndex, tracking the order of disks as returned by Xend. This satisfies the requirement of bootIndex being unique. When converting back to xen-sexpr, the exact order of bootable disks is lost, since Xend only stores a boolean flag. If multiple disks are marked bootable, the behaviour is undefined. Adapt all Xen-sexpr tests to now contain the extra '(bootbale 0)' flag. It must be explicitly set, otherwise Xend remembers the old state and only ever adds the bootable indicator. Signed-off-by: Philipp Hahn <hahn@univention.de> --- src/xenxs/xen_sxpr.c | 18 +++++++++++------- tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml | 1 + .../sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml | 1 + tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-curmem.sexpr | 2 +- .../xml2sexpr-disk-block-shareable.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-block.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap-qcow.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap-raw.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap2-raw.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-file.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-escape.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr | 2 +- .../xml2sexpr-fv-serial-dev-2-ports.sexpr | 2 +- .../xml2sexpr-fv-serial-dev-2nd-port.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr | 2 +- .../xml2sexpr-fv-serial-tcp-telnet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr | 4 ++-- tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr | 4 ++-- tests/xml2sexprdata/xml2sexpr-fv.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-routed.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr | 4 ++-- tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr | 2 +- .../xml2sexpr-pv-bootloader-cmdline.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv.sexpr | 2 +- 55 files changed, 68 insertions(+), 62 deletions(-) diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c index d44b0dc..d571c72 100644 --- a/src/xenxs/xen_sxpr.c +++ b/src/xenxs/xen_sxpr.c @@ -335,6 +335,7 @@ xenParseSxprDisks(virDomainDefPtr def, { const struct sexpr *cur, *node; virDomainDiskDefPtr disk = NULL; + int bootIndex = 0; for (cur = root; cur->kind == SEXPR_CONS; cur = cur->u.s.cdr) { node = cur->u.s.car; @@ -494,16 +495,13 @@ xenParseSxprDisks(virDomainDefPtr def, strchr(mode, '!')) disk->shared = 1; + if (STREQ_NULLABLE(bootable, "1")) + disk->bootIndex = ++bootIndex; + if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0) goto no_memory; - /* re-order disks if there is a bootable device */ - if (STREQ_NULLABLE(bootable, "1")) { - def->disks[def->ndisks++] = def->disks[0]; - def->disks[0] = disk; - } else { - def->disks[def->ndisks++] = disk; - } + def->disks[def->ndisks++] = disk; disk = NULL; } } @@ -1736,6 +1734,12 @@ xenFormatSxprDisk(virDomainDiskDefPtr def, virBufferAddLit(buf, "(mode 'w!')"); else virBufferAddLit(buf, "(mode 'w')"); + + if (def->bootIndex) + virBufferAddLit(buf, "(bootable 1)"); + else + virBufferAddLit(buf, "(bootable 0)"); + if (def->transient) { XENXS_ERROR(VIR_ERR_CONFIG_UNSUPPORTED, _("transient disks not supported yet")); diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml b/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml index 3f501e7..b07bb6e 100644 --- a/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml +++ b/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml @@ -22,6 +22,7 @@ <driver name='phy'/> <source dev='/iscsi/winxp'/> <target dev='hda' bus='ide'/> + <boot order='1'/> </disk> <disk type='file' device='cdrom'> <driver name='file'/> diff --git a/tests/sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml index 766c78d..eb830a7 100644 --- a/tests/sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml +++ b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml @@ -18,6 +18,7 @@ <driver name='phy'/> <source dev='/dev/vg_dom0test/test2vm'/> <target dev='xvda' bus='xen'/> + <boot order='1'/> </disk> <interface type='bridge'> <mac address='00:16:36:68:9f:5d'/> diff --git a/tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr b/tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr index 88c0f68..9517246 100644 --- a/tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr @@ -2,4 +2,4 @@ (uuid '596a5d21-71f4-8fb2-e068-e2386a5c413e')(on_poweroff 'destroy')\ (on_reboot 'destroy')(on_crash 'destroy')(image (linux \ (kernel '/usr/lib/xen/boot/pv-grub-x86_64.gz')(args '(hd0,0)/grub/menu.lst')))\ -(device (vbd (dev 'xvda')(uname 'phy:/dev/MainVG/GuestLV')(mode 'w'))))\ +(device (vbd (dev 'xvda')(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr b/tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr index 56ff525..de2e130 100644 --- a/tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:11:22:33:44:55')(bridge 'xenbr2')\ (script 'vif-bridge')(ip '192.0.2.1'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-curmem.sexpr b/tests/xml2sexprdata/xml2sexpr-curmem.sexpr index e7149b3..97ecf4a 100644 --- a/tests/xml2sexprdata/xml2sexpr-curmem.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-curmem.sexpr @@ -1,6 +1,6 @@ (vm (name 'rhel5')(memory 175)(maxmem 385)(vcpus 1)\ (uuid '4f77abd2-3019-58e8-3bab-6fbf2118f880')(bootloader '/usr/bin/pygrub')\ (on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')\ -(device (tap (dev 'xvda')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')))\ +(device (tap (dev 'xvda')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1d:06:15')(bridge 'xenbr0')\ (script 'vif-bridge'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr index b8387e5..dbc9de6 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr @@ -3,5 +3,5 @@ (on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')\ (image (linux (args 'ro root=/dev/VolGroup00/LogVol00')))\ (device (tap (dev 'xvda')(uname 'tap:aio:/var/lib/xen/images/rhel5pv.img')\ -(mode 'w!')))(device (vif (mac '00:16:3e:23:9e:eb')(bridge 'xenbr0')\ +(mode 'w!')(bootable 0)))(device (vif (mac '00:16:3e:23:9e:eb')(bridge 'xenbr0')\ (script 'vif-bridge'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-block.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-block.sexpr index 960801a..ac21c91 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-block.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-block.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'phy:/dev/MainVG/GuestLV')(mode 'w'))))\ +(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr index 960801a..ac21c91 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'phy:/dev/MainVG/GuestLV')(mode 'w'))))\ +(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr index 1e1b381..7392ce3 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap (dev 'xvda')\ -(uname 'tap:qcow:/root/some.img')(mode 'w'))))\ +(uname 'tap:qcow:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr index 6b66e43..d4cd78c 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap (dev 'xvda')\ -(uname 'tap:aio:/root/some.img')(mode 'w'))))\ +(uname 'tap:aio:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr index 6b66e43..d4cd78c 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap (dev 'xvda')\ -(uname 'tap:aio:/root/some.img')(mode 'w'))))\ +(uname 'tap:aio:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2-raw.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2-raw.sexpr index 1e79bcf..7353f2b 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2-raw.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2-raw.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap2 (dev 'xvda')\ -(uname 'tap2:aio:/root/some.img')(mode 'w'))))\ +(uname 'tap2:aio:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr index 1e79bcf..7353f2b 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap2 (dev 'xvda')\ -(uname 'tap2:aio:/root/some.img')(mode 'w'))))\ +(uname 'tap2:aio:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr index dac0aa3..0e416db 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-file.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-file.sexpr index dac0aa3..0e416db 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-file.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-file.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-escape.sexpr b/tests/xml2sexprdata/xml2sexpr-escape.sexpr index 7b29131..2ece51a 100644 --- a/tests/xml2sexprdata/xml2sexpr-escape.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-escape.sexpr @@ -7,4 +7,4 @@ core/test/5.91/x86_64/os&version="devel" ')\ (loader '/usr/lib/xen/boot/hvmloader')(vcpus 2)(boot c)(usb 1)(parallel none)\ (serial pty)(device_model '/usr/lib/xen/bin/qemu-dm')))\ -(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/\'\\some.img')(mode 'w'))))\ +(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/\'\\some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr index 400872d..996e618 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(hpet 1)(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr index 9577892..b53e316 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(hpet 0)(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr index 4950832..7cd257d 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr @@ -7,4 +7,4 @@ core/test/5.91/x86_64/os ')(loader '/usr/lib/xen/boot/hvmloader')(vcpus 2)\ (boot c)(usb 1)(parallel none)(serial pty)\ (device_model '/usr/lib/xen/bin/qemu-dm')))\ -(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/some.img')(mode 'w'))))\ +(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr index 4f91119..c79addb 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (localtime 1)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr index 71df15b..d37aa62 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr @@ -4,5 +4,5 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 0)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr index 7fe2544..705a05d 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr @@ -4,5 +4,5 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 0)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(type netfront))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr index 38504b1..7ee0440 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel tcp:localhost:9999)\ (serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2-ports.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2-ports.sexpr index f3bfbd7..f7e8758 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2-ports.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2-ports.sexpr @@ -5,5 +5,5 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial (/dev/ttyS0 /dev/ttyS1))(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 0)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2nd-port.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2nd-port.sexpr index 9ecbbe0..aef9112 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2nd-port.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2nd-port.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial (none /dev/ttyS1))(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr index be40218..8c36dae 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr @@ -5,5 +5,5 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial file:/tmp/serial.log)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 0)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr index 40243a7..26371d0 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial null)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr index 4e2dc78..74f3c23 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr @@ -5,5 +5,5 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial pipe:/tmp/serial.pipe)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 0)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr index 7ae9315..29219f6 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial pty)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr index 8369bb4..f2c9cff 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial stdio)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp-telnet.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp-telnet.sexpr index 40120cf..53e393c 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp-telnet.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp-telnet.sexpr @@ -5,6 +5,6 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial telnet:localhost:9999,server,nowait)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr index 7938a7b..09c0f19 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr @@ -5,6 +5,6 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial tcp:localhost:9999,server,nowait)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr index 3c19f25..702e809 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr @@ -5,6 +5,6 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial udp:localhost:9998@localhost:9999)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr index 67ceeaa..a3f8939 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr @@ -5,6 +5,6 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial unix:/tmp/serial.sock,server,nowait)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr index 4c37c35..7c00674 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (soundhw 'sb16,es1370')(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr index c0ad2bc..057d6d6 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice mouse)(parallel none)\ (serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr index ff1c695..5f9465b 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice tablet)(parallel none)\ (serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr index 81fb92d..ec672f4 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr index b27e990..c0f7ed1 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr @@ -4,7 +4,7 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)(vncunused 0)(vncdisplay 17)(keymap 'ja')))\ -(device (vbd (dev 'hda:disk')(uname 'file:/root/foo.img')(mode 'w')))\ -(device (vbd (dev 'hdc:cdrom')(uname 'file:/root/boot.iso')(mode 'r')))\ +(device (vbd (dev 'hda:disk')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ +(device (vbd (dev 'hdc:cdrom')(uname 'file:/root/boot.iso')(mode 'r')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr index 908ae94..3a81dbc 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr @@ -4,7 +4,7 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)(vncunused 1)(keymap 'ja')))(device (vbd (dev 'hda:disk')\ -(uname 'file:/root/foo.img')(mode 'w')))(device (vbd (dev 'hdc:cdrom')\ -(uname 'file:/root/boot.iso')(mode 'r')))\ +(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))(device (vbd (dev 'hdc:cdrom')\ +(uname 'file:/root/boot.iso')(mode 'r')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv.sexpr b/tests/xml2sexprdata/xml2sexpr-fv.sexpr index 81fb92d..ec672f4 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr b/tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr index 0c0c62e..d0b849f 100644 --- a/tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:11:22:33:44:55')(bridge 'xenbr2')\ (script 'vif-bridge'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr b/tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr index d95ed82..148efa0 100644 --- a/tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:11:22:33:44:55')(bridge 'xenbr2')\ (script 'vif-bridge')(model 'e1000'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-net-routed.sexpr b/tests/xml2sexprdata/xml2sexpr-net-routed.sexpr index 3430e31..1692b15 100644 --- a/tests/xml2sexprdata/xml2sexpr-net-routed.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-net-routed.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:11:22:33:44:55')(script 'vif-routed')\ (ip '172.14.5.6'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr b/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr index eeebee3..b58c656 100644 --- a/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (apic 1)(pae 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib/xen/bin/qemu-dm')(vnc 1)(vncunused 0)(vncdisplay 6)))\ -(device (vbd (dev 'hda:disk')(uname 'phy:/dev/sda8')(mode 'w')))\ -(device (vbd (dev 'hdc:cdrom')(mode 'r')))\ +(device (vbd (dev 'hda:disk')(uname 'phy:/dev/sda8')(mode 'w')(bootable 0)))\ +(device (vbd (dev 'hdc:cdrom')(mode 'r')(bootable 0)))\ (device (vif (mac '00:16:3e:0a:7b:39')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr b/tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr index fdc48cf..fa724f2 100644 --- a/tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')))\ +(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')(bootable 0)))\ (device (pci (dev (domain 0x0001)(bus 0x0c)(slot 0x1b)(func 0x2))\ (dev (domain 0x0000)(bus 0x01)(slot 0x13)(func 0x0)))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr index 236017e..e4e8f52 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr @@ -2,4 +2,4 @@ (uuid '596a5d21-71f4-8fb2-e068-e2386a5c413e')(bootloader '/usr/bin/pygrub')\ (bootloader_args '-q')(on_poweroff 'destroy')(on_reboot 'destroy')\ (on_crash 'destroy')(image (linux (args 'xenfb.video=8,1280,1024')))\ -(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w'))))\ +(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr index c11938e..5f67f79 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr @@ -2,4 +2,4 @@ (uuid '596a5d21-71f4-8fb2-e068-e2386a5c413e')(bootloader '/usr/bin/pypxeboot')\ (bootloader_args 'mac=AA:00:86:e2:35:72')(on_poweroff 'destroy')\ (on_reboot 'destroy')(on_crash 'destroy')(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr index 589bbdf..deb4389 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr @@ -1,6 +1,6 @@ (vm (name 'rhel5')(memory 175)(maxmem 385)(vcpus 1)\ (uuid '4f77abd2-3019-58e8-3bab-6fbf2118f880')(bootloader '/usr/bin/pygrub')\ (on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(localtime 1)\ -(device (tap (dev 'xvda')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')))\ +(device (tap (dev 'xvda')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')(bootable 0)))\ (device (vif (mac '00:16:3e:1d:06:15')(bridge 'xenbr0')\ (script 'vif-bridge'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr index df854ca..f250d11 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr index 5eb0133..5125954 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))(device (vkbd))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0)))(device (vkbd))\ (device (vfb (type vnc)(vncunused 1)(vnclisten '127.0.0.1')\ (vncpasswd '123456')(keymap 'ja'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr index c74098f..0b5f464 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))(device (vkbd))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0)))(device (vkbd))\ (device (vfb (type vnc)(vncunused 0)(vncdisplay 6)(vnclisten '127.0.0.1')\ (vncpasswd '123456')(keymap 'ja'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr index 1e22b83..3924035 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr @@ -6,4 +6,4 @@ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')(vnc 1)(vncunused 0)(vncdisplay 6)\ (vnclisten '127.0.0.1')(vncpasswd '123456')(keymap 'ja')))\ -(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w'))))\ +(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w')(bootable 0))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv.sexpr b/tests/xml2sexprdata/xml2sexpr-pv.sexpr index dac0aa3..0e416db 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 0))))\ -- 1.7.1

On Mon, Oct 31, 2011 at 13:39:09 +0100, Philipp Hahn wrote:
When PyGrub is used as the bootloader in Xen, it gets passed the first bootable disk. Xend supports a "bootable"-flag for this, which was previously unused. In commit c2969ec7aec5c40519aadf422ab5c47a21938bff the bootable=1 flag was used to re-order the disks when converting from SEXPR to XML, such that on re-definition Xend would mark the first disk as bootable. This got broken with commit c1a98d88255197a8446d08c0b1589861660e9064, which reorders all disks according to their target-name, making it impossible to change the boot order without changing the device names.
When converting from Xen-sexpr to xml, Xens boolean bootable-flag is converted to libvirts cardinal bootIndex, tracking the order of disks as returned by Xend. This satisfies the requirement of bootIndex being unique.
When converting back to xen-sexpr, the exact order of bootable disks is lost, since Xend only stores a boolean flag. If multiple disks are marked bootable, the behaviour is undefined.
Adapt all Xen-sexpr tests to now contain the extra '(bootbale 0)' flag. It must be explicitly set, otherwise Xend remembers the old state and only ever adds the bootable indicator.
diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c index d44b0dc..d571c72 100644 --- a/src/xenxs/xen_sxpr.c +++ b/src/xenxs/xen_sxpr.c @@ -335,6 +335,7 @@ xenParseSxprDisks(virDomainDefPtr def, { const struct sexpr *cur, *node; virDomainDiskDefPtr disk = NULL; + int bootIndex = 0;
for (cur = root; cur->kind == SEXPR_CONS; cur = cur->u.s.cdr) { node = cur->u.s.car; @@ -494,16 +495,13 @@ xenParseSxprDisks(virDomainDefPtr def, strchr(mode, '!')) disk->shared = 1;
+ if (STREQ_NULLABLE(bootable, "1")) + disk->bootIndex = ++bootIndex; + if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0) goto no_memory;
- /* re-order disks if there is a bootable device */ - if (STREQ_NULLABLE(bootable, "1")) { - def->disks[def->ndisks++] = def->disks[0]; - def->disks[0] = disk; - } else { - def->disks[def->ndisks++] = disk; - } + def->disks[def->ndisks++] = disk; disk = NULL; } } @@ -1736,6 +1734,12 @@ xenFormatSxprDisk(virDomainDiskDefPtr def, virBufferAddLit(buf, "(mode 'w!')"); else virBufferAddLit(buf, "(mode 'w')"); + + if (def->bootIndex) + virBufferAddLit(buf, "(bootable 1)"); + else + virBufferAddLit(buf, "(bootable 0)"); + if (def->transient) { XENXS_ERROR(VIR_ERR_CONFIG_UNSUPPORTED, _("transient disks not supported yet"));
Is there any way you can pass the exact order to Xen? Multiple devices with bootIndex are allowed (the indexes are unique of course) to specify booting preference and by setting (bootable 1) anytime bootIndex != 0 makes all such devices bootable in unspecified order. If only one bootable device is supported by Xen, you should probably emit (bootable 1) only for bootIndex = 1 and maybe even forbid more than one device with bootIndex. You also need to add 'deviceboot' feature to guest capabilities XML so that apps know they can use <boot order='n'/> when creating this kind of guests. Jirka

Hello Kiri, Am Montag 31 Oktober 2011 15:15:12 schrieb Jiri Denemark:
Is there any way you can pass the exact order to Xen?
Not that I know of. This is one of the corner cases, which is only relevant if you have a Xen-PV domain AND are using PyGrub as the boot-loader. For HV the flag is unused and for direct kernel boot you don't need it either. Only for PV+bootloader needs Xend a way to find the disk containing the kernel. In xen-4.1/tools/python/xen/xend/XendDomainInfo.py:3234 _configureBootloader() build a list of all vbds marked bootable and passes only the first one to Pygrub. Technically you mark multiple disks as bootable, but the flag is only set in xen-4.1/tools/python/xen/xend/XendConfig.py:1498 device_add(), which does this exactly once for the first disk added.
Multiple devices with bootIndex are allowed (the indexes are unique of course) to specify booting preference and by setting (bootable 1) anytime bootIndex != 0 makes all such devices bootable in unspecified order.
Same with Xen — I thinks: If you mark multiple disks as bootable, the first disk gets used — whichever that is.
If only one bootable device is supported by Xen, you should probably emit (bootable 1) only for bootIndex = 1 and maybe even forbid more than one device with bootIndex.
This makes perfect sense for libvirt → xen, since we want determinictic behaviour. But if multiple disk are marked bootable, converting xen → libvirtd either has to pick one disk and report just that disk as bootable; or reports all disks marked as bootable. Either way, round-trip is broken. I wish XenLight would be useable.
You also need to add 'deviceboot' feature to guest capabilities XML so that apps know they can use <boot order='n'/> when creating this kind of guests.
Will have a look. Sincerely Philipp -- Philipp Hahn Open Source Software Engineer hahn@univention.de Univention GmbH Linux for Your Business fon: +49 421 22 232- 0 Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99 http://www.univention.de/

Hello Jiri, one more thing: On Monday 31 October 2011 15:15:12 Jiri Denemark wrote:
Is there any way you can pass the exact order to Xen?
As far as I know the disks of Xen just have an order. This implicit order is lost when the disks are sorted by target/@bus and target/@name. BYtE Philipp -- Philipp Hahn Open Source Software Engineer hahn@univention.de Univention GmbH Linux for Your Business fon: +49 421 22 232- 0 Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99 http://www.univention.de/

On Mon, Oct 31, 2011 at 16:14:46 +0100, Philipp Hahn wrote:
Hello Jiri,
one more thing:
On Monday 31 October 2011 15:15:12 Jiri Denemark wrote:
Is there any way you can pass the exact order to Xen?
As far as I know the disks of Xen just have an order. This implicit order is lost when the disks are sorted by target/@bus and target/@name.
Ah, ok. So I think we need to sort disks by bootIndex when passing them to xen and increase bootIndex everytime we see bootable flag set when reading disks back from xen. Of course, this will in fact change the order of disk elements in the xml generated by libvirt vs. the xml passed by a user by the content should not change at all. I think that should we fine. Jirka

When using PyGrub as the boot-loader for Xen-PV domains, Xend passes the first disk marked as bootable to it. Xend automatically sets this flag to 1 for the first disk created for a domain. Until commit c1a98d88255197a8446d08c0b1589861660e9064 the order of disks could be changed by re-ordering the disk and re-defining the domain. After that patch the order can only be changed by modifying the disk device names, which are visible to the Guest OS and thus break mounting devices by device-name. Changing the device order is needed, since Xen-PV domains don't have a domain/os/boot BIOS section to change the boot order from CD-ROM to disk. Patch 1 fixes a bug in the Relax-NG for capabilities, which is not Xen related, but applies to Qemu, too. The following patches uses bootIndex to track the order of bootable devices; non-bootable devices still get reordered by virDomainDiskInsertPreAlloced(), which should be okay. The <deviceboot>-capability is added for Xen-PV-domain. I don't know if this is 100% correct, since the bootloader is only ever called with disks, not with interfaces; marking a interface as bootable wouldn't work. I've split the change into multiple patches to ease review. It might be better to commit the last three patches as one, since bi-section is broken otherwise. Changes since v1: * explicitly sort disks by bootIndex on XML to S-Expr. * Add deviceboot capability. Philipp Hahn (4): doc: Add <deviceboot> capability. xen: support bootable flag for Xen-PV. xen: fix PyGrub device order using boot/@order test/xen: PyGrub device order using boot/@order docs/schemas/capability.rng | 5 ++ src/xen/xen_hypervisor.c | 7 +++ src/xen/xend_internal.c | 4 +- src/xenxs/xen_sxpr.c | 50 ++++++++++++++++---- src/xenxs/xen_sxpr.h | 2 +- tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml | 1 + .../sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml | 1 + tests/xencapsdata/xen-i686-pae-hvm.xml | 1 + tests/xencapsdata/xen-i686-pae.xml | 1 + tests/xencapsdata/xen-i686.xml | 1 + tests/xencapsdata/xen-ia64-be-hvm.xml | 1 + tests/xencapsdata/xen-ia64-be.xml | 1 + tests/xencapsdata/xen-ia64-hvm.xml | 3 + tests/xencapsdata/xen-ia64.xml | 3 + tests/xencapsdata/xen-ppc64.xml | 3 + tests/xencapsdata/xen-x86_64-hvm.xml | 3 + tests/xencapsdata/xen-x86_64.xml | 3 + tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-curmem.sexpr | 2 +- .../xml2sexpr-disk-block-shareable.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-block.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap-qcow.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap-raw.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap2-raw.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-file.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-escape.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr | 2 +- .../xml2sexpr-fv-serial-dev-2-ports.sexpr | 2 +- .../xml2sexpr-fv-serial-dev-2nd-port.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr | 2 +- .../xml2sexpr-fv-serial-tcp-telnet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr | 4 +- tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr | 4 +- tests/xml2sexprdata/xml2sexpr-fv.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-routed.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr | 4 +- tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr | 2 +- .../xml2sexpr-pv-bootloader-cmdline.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv.sexpr | 2 +- 69 files changed, 132 insertions(+), 68 deletions(-)

When PyGrub is used as the bootloader in Xen, it gets passed the first bootable disk. Xend supports a "bootable"-flag for this, which was previously unused. In commit c2969ec7aec5c40519aadf422ab5c47a21938bff the bootable=1 flag was used to re-order the disks when converting from SEXPR to XML, such that on re-definition Xend would mark the first disk as bootable. This got broken with commit c1a98d88255197a8446d08c0b1589861660e9064, which reorders all disks according to their target-name, making it impossible to change the boot order without changing the device names. When converting from Xen-sexpr to xml, Xens boolean bootable-flag is converted to libvirts cardinal bootIndex, tracking the order of disks as returned by Xend. This satisfies the requirement of bootIndex being unique. When converting back to xen-sexpr, disks with an explicit bootIndex are sorted ascending before all other disks and are marked as bootable. Explicitly mark the first disk as bootable for compatibility with Xends default behaviour. Add capability "deviceboot" to Xen-PV-domains. This is not 100% correct, since for example PyGrub only handles disk devices and not netboot. Signed-off-by: Philipp Hahn <hahn@univention.de> --- v2: explicitly sort disks by bootIndex v2: Add deviceboot capability. --- src/xen/xen_hypervisor.c | 7 +++++++ src/xenxs/xen_sxpr.c | 39 ++++++++++++++++++++++++++++++--------- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c index 58ae6a3..faca121 100644 --- a/src/xen/xen_hypervisor.c +++ b/src/xen/xen_hypervisor.c @@ -2402,6 +2402,13 @@ xenHypervisorBuildCapabilities(virConnectPtr conn, 0, 1) == NULL) goto no_memory; + } else { /* !hvm */ + /* Limited suport of deviceboot Xen-PV domains using PyGrub */ + if (virCapabilitiesAddGuestFeature(guest, + "deviceboot", + 1, + 0) == NULL) + goto no_memory; } } diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c index b78e316..9786ad3 100644 --- a/src/xenxs/xen_sxpr.c +++ b/src/xenxs/xen_sxpr.c @@ -335,6 +335,7 @@ xenParseSxprDisks(virDomainDefPtr def, { const struct sexpr *cur, *node; virDomainDiskDefPtr disk = NULL; + int bootIndex = 0; for (cur = root; cur->kind == SEXPR_CONS; cur = cur->u.s.cdr) { node = cur->u.s.car; @@ -494,16 +495,13 @@ xenParseSxprDisks(virDomainDefPtr def, strchr(mode, '!')) disk->shared = 1; + if (STREQ_NULLABLE(bootable, "1")) + disk->bootIndex = ++bootIndex; + if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0) goto no_memory; - /* re-order disks if there is a bootable device */ - if (STREQ_NULLABLE(bootable, "1")) { - def->disks[def->ndisks++] = def->disks[0]; - def->disks[0] = disk; - } else { - def->disks[def->ndisks++] = disk; - } + def->disks[def->ndisks++] = disk; disk = NULL; } } @@ -2043,6 +2041,7 @@ xenFormatSxpr(virConnectPtr conn, const char *tmp; char *bufout; int hvm = 0, i; + virDomainDiskDefPtr *disks = NULL; VIR_DEBUG("Formatting domain sexpr"); @@ -2315,10 +2314,31 @@ xenFormatSxpr(virConnectPtr conn, } } + /* Sort bootable disks in ascending order by bootIndex, other disks behind */ + if (VIR_ALLOC_N(disks, def->ndisks) < 0) + goto error; + for (i = 0; i < def->ndisks; i++) { + if (def->disks[i]->bootIndex) { + int j; + /* move back later disks */ + for (j = i; + j > 0 && (disks[j - 1]->bootIndex == 0 || + disks[j - 1]->bootIndex > def->disks[i]->bootIndex); + j--) + disks[j] = disks[j - 1]; + disks[j] = def->disks[i]; + } else { + /* append disks without explicit bootIndex to tail */ + disks[i] = def->disks[i]; + } + } + for (i = 0 ; i < def->ndisks ; i++) - if (xenFormatSxprDisk(def->disks[i], - &buf, hvm, xendConfigVersion, 0, -1) < 0) + if (xenFormatSxprDisk(disks[i], + &buf, hvm, xendConfigVersion, 0, + i == 0 || disks[i]->bootIndex > 0) < 0) goto error; + VIR_FREE(disks); for (i = 0 ; i < def->nnets ; i++) if (xenFormatSxprNet(conn, def->nets[i], @@ -2349,6 +2369,7 @@ xenFormatSxpr(virConnectPtr conn, return bufout; error: + VIR_FREE(disks); virBufferFreeAndReset(&buf); return NULL; } -- 1.7.1

On Mon, Oct 31, 2011 at 13:39:09 +0100, Philipp Hahn wrote:
When PyGrub is used as the bootloader in Xen, it gets passed the first bootable disk. Xend supports a "bootable"-flag for this, which was previously unused. In commit c2969ec7aec5c40519aadf422ab5c47a21938bff the bootable=1 flag was used to re-order the disks when converting from SEXPR to XML, such that on re-definition Xend would mark the first disk as bootable. This got broken with commit c1a98d88255197a8446d08c0b1589861660e9064, which reorders all disks according to their target-name, making it impossible to change the boot order without changing the device names.
When converting from Xen-sexpr to xml, Xens boolean bootable-flag is converted to libvirts cardinal bootIndex, tracking the order of disks as returned by Xend. This satisfies the requirement of bootIndex being unique.
When converting back to xen-sexpr, disks with an explicit bootIndex are sorted ascending before all other disks and are marked as bootable.
Explicitly mark the first disk as bootable for compatibility with Xends default behaviour.
Add capability "deviceboot" to Xen-PV-domains. This is not 100% correct, since for example PyGrub only handles disk devices and not netboot.
Signed-off-by: Philipp Hahn <hahn@univention.de> --- v2: explicitly sort disks by bootIndex v2: Add deviceboot capability. --- src/xen/xen_hypervisor.c | 7 +++++++ src/xenxs/xen_sxpr.c | 39 ++++++++++++++++++++++++++++++--------- 2 files changed, 37 insertions(+), 9 deletions(-)
ACK Jirka

On Thu, Nov 03, 2011 at 11:21:24 +0100, Jiri Denemark wrote:
On Mon, Oct 31, 2011 at 13:39:09 +0100, Philipp Hahn wrote:
When PyGrub is used as the bootloader in Xen, it gets passed the first bootable disk. Xend supports a "bootable"-flag for this, which was previously unused. In commit c2969ec7aec5c40519aadf422ab5c47a21938bff the bootable=1 flag was used to re-order the disks when converting from SEXPR to XML, such that on re-definition Xend would mark the first disk as bootable. This got broken with commit c1a98d88255197a8446d08c0b1589861660e9064, which reorders all disks according to their target-name, making it impossible to change the boot order without changing the device names.
When converting from Xen-sexpr to xml, Xens boolean bootable-flag is converted to libvirts cardinal bootIndex, tracking the order of disks as returned by Xend. This satisfies the requirement of bootIndex being unique.
When converting back to xen-sexpr, disks with an explicit bootIndex are sorted ascending before all other disks and are marked as bootable.
Explicitly mark the first disk as bootable for compatibility with Xends default behaviour.
Add capability "deviceboot" to Xen-PV-domains. This is not 100% correct, since for example PyGrub only handles disk devices and not netboot.
Signed-off-by: Philipp Hahn <hahn@univention.de> --- v2: explicitly sort disks by bootIndex v2: Add deviceboot capability. --- src/xen/xen_hypervisor.c | 7 +++++++ src/xenxs/xen_sxpr.c | 39 ++++++++++++++++++++++++++++++--------- 2 files changed, 37 insertions(+), 9 deletions(-)
ACK
Actually, I'm changing my mind. After reviewing patch 4/4, seeing you also added deviceboot for hvm guest capabilities and included it in both SEXPRs and XMLs for hvm domains, and realizing why you most likely did that, I think you should fix the code to be consistent with this. You do that because Xen hvm boots from the first disk in SEXPR and you want to preserve that order while doing SEXPR->XML->SEXPR, right? If so, I think you should add deviceboot feature for both hvm and pv guests, but hvm should forbid bootindex > 1 since it is not supported by xen (yet?). This way even users could influence what should be the first disk that Xen will boot from when creating a new domain. BTW, should xen{Parse,Format}XM be changed to do similar thing? That is reorder disk device according to bootindex when creating xm config files? Jirka

Adapt all Xen-sexpr tests to now contain the extra '(bootbale [01])' flag. It is explicitly set, otherwise Xend remembers the old state and only ever adds the bootable indicator. Signed-off-by: Philipp Hahn <hahn@univention.de> --- v2: Add deviceboot capability. --- tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml | 1 + .../sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml | 1 + tests/xencapsdata/xen-i686-pae-hvm.xml | 1 + tests/xencapsdata/xen-i686-pae.xml | 1 + tests/xencapsdata/xen-i686.xml | 1 + tests/xencapsdata/xen-ia64-be-hvm.xml | 1 + tests/xencapsdata/xen-ia64-be.xml | 1 + tests/xencapsdata/xen-ia64-hvm.xml | 3 +++ tests/xencapsdata/xen-ia64.xml | 3 +++ tests/xencapsdata/xen-ppc64.xml | 3 +++ tests/xencapsdata/xen-x86_64-hvm.xml | 3 +++ tests/xencapsdata/xen-x86_64.xml | 3 +++ tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-curmem.sexpr | 2 +- .../xml2sexpr-disk-block-shareable.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-block.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap-qcow.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap-raw.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr | 2 +- .../xml2sexpr-disk-drv-blktap2-raw.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-disk-file.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-escape.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr | 2 +- .../xml2sexpr-fv-serial-dev-2-ports.sexpr | 2 +- .../xml2sexpr-fv-serial-dev-2nd-port.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr | 2 +- .../xml2sexpr-fv-serial-tcp-telnet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr | 4 ++-- tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr | 4 ++-- tests/xml2sexprdata/xml2sexpr-fv.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-net-routed.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr | 4 ++-- tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr | 2 +- .../xml2sexpr-pv-bootloader-cmdline.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr | 2 +- .../xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr | 2 +- tests/xml2sexprdata/xml2sexpr-pv.sexpr | 2 +- 64 files changed, 77 insertions(+), 55 deletions(-) diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml b/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml index 3f501e7..b07bb6e 100644 --- a/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml +++ b/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml @@ -22,6 +22,7 @@ <driver name='phy'/> <source dev='/iscsi/winxp'/> <target dev='hda' bus='ide'/> + <boot order='1'/> </disk> <disk type='file' device='cdrom'> <driver name='file'/> diff --git a/tests/sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml index 766c78d..eb830a7 100644 --- a/tests/sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml +++ b/tests/sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml @@ -18,6 +18,7 @@ <driver name='phy'/> <source dev='/dev/vg_dom0test/test2vm'/> <target dev='xvda' bus='xen'/> + <boot order='1'/> </disk> <interface type='bridge'> <mac address='00:16:36:68:9f:5d'/> diff --git a/tests/xencapsdata/xen-i686-pae-hvm.xml b/tests/xencapsdata/xen-i686-pae-hvm.xml index 42b099c..2773f82 100644 --- a/tests/xencapsdata/xen-i686-pae-hvm.xml +++ b/tests/xencapsdata/xen-i686-pae-hvm.xml @@ -26,6 +26,7 @@ </arch> <features> <pae/> + <deviceboot/> </features> </guest> diff --git a/tests/xencapsdata/xen-i686-pae.xml b/tests/xencapsdata/xen-i686-pae.xml index a6cec8a..97a23d6 100644 --- a/tests/xencapsdata/xen-i686-pae.xml +++ b/tests/xencapsdata/xen-i686-pae.xml @@ -26,6 +26,7 @@ </arch> <features> <pae/> + <deviceboot/> </features> </guest> diff --git a/tests/xencapsdata/xen-i686.xml b/tests/xencapsdata/xen-i686.xml index 9071212..60e9ff3 100644 --- a/tests/xencapsdata/xen-i686.xml +++ b/tests/xencapsdata/xen-i686.xml @@ -23,6 +23,7 @@ </arch> <features> <nonpae/> + <deviceboot/> </features> </guest> diff --git a/tests/xencapsdata/xen-ia64-be-hvm.xml b/tests/xencapsdata/xen-ia64-be-hvm.xml index 732b693..662504e 100644 --- a/tests/xencapsdata/xen-ia64-be-hvm.xml +++ b/tests/xencapsdata/xen-ia64-be-hvm.xml @@ -23,6 +23,7 @@ </arch> <features> <ia64_be/> + <deviceboot/> </features> </guest> diff --git a/tests/xencapsdata/xen-ia64-be.xml b/tests/xencapsdata/xen-ia64-be.xml index 4f133ec..d80e10d 100644 --- a/tests/xencapsdata/xen-ia64-be.xml +++ b/tests/xencapsdata/xen-ia64-be.xml @@ -23,6 +23,7 @@ </arch> <features> <ia64_be/> + <deviceboot/> </features> </guest> diff --git a/tests/xencapsdata/xen-ia64-hvm.xml b/tests/xencapsdata/xen-ia64-hvm.xml index ef48a95..1a5a48d 100644 --- a/tests/xencapsdata/xen-ia64-hvm.xml +++ b/tests/xencapsdata/xen-ia64-hvm.xml @@ -21,6 +21,9 @@ <domain type='xen'> </domain> </arch> + <features> + <deviceboot/> + </features> </guest> <guest> diff --git a/tests/xencapsdata/xen-ia64.xml b/tests/xencapsdata/xen-ia64.xml index 5570f4d..ef3f470 100644 --- a/tests/xencapsdata/xen-ia64.xml +++ b/tests/xencapsdata/xen-ia64.xml @@ -21,6 +21,9 @@ <domain type='xen'> </domain> </arch> + <features> + <deviceboot/> + </features> </guest> </capabilities> diff --git a/tests/xencapsdata/xen-ppc64.xml b/tests/xencapsdata/xen-ppc64.xml index 627d79c..5b7361e 100644 --- a/tests/xencapsdata/xen-ppc64.xml +++ b/tests/xencapsdata/xen-ppc64.xml @@ -21,6 +21,9 @@ <domain type='xen'> </domain> </arch> + <features> + <deviceboot/> + </features> </guest> </capabilities> diff --git a/tests/xencapsdata/xen-x86_64-hvm.xml b/tests/xencapsdata/xen-x86_64-hvm.xml index 52c12c6..c8299f7 100644 --- a/tests/xencapsdata/xen-x86_64-hvm.xml +++ b/tests/xencapsdata/xen-x86_64-hvm.xml @@ -24,6 +24,9 @@ <domain type='xen'> </domain> </arch> + <features> + <deviceboot/> + </features> </guest> <guest> diff --git a/tests/xencapsdata/xen-x86_64.xml b/tests/xencapsdata/xen-x86_64.xml index 0faa43c..6e403f8 100644 --- a/tests/xencapsdata/xen-x86_64.xml +++ b/tests/xencapsdata/xen-x86_64.xml @@ -24,6 +24,9 @@ <domain type='xen'> </domain> </arch> + <features> + <deviceboot/> + </features> </guest> </capabilities> diff --git a/tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr b/tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr index 88c0f68..ea07b29 100644 --- a/tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-boot-grub.sexpr @@ -2,4 +2,4 @@ (uuid '596a5d21-71f4-8fb2-e068-e2386a5c413e')(on_poweroff 'destroy')\ (on_reboot 'destroy')(on_crash 'destroy')(image (linux \ (kernel '/usr/lib/xen/boot/pv-grub-x86_64.gz')(args '(hd0,0)/grub/menu.lst')))\ -(device (vbd (dev 'xvda')(uname 'phy:/dev/MainVG/GuestLV')(mode 'w'))))\ +(device (vbd (dev 'xvda')(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr b/tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr index 56ff525..3038beb 100644 --- a/tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:11:22:33:44:55')(bridge 'xenbr2')\ (script 'vif-bridge')(ip '192.0.2.1'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-curmem.sexpr b/tests/xml2sexprdata/xml2sexpr-curmem.sexpr index e7149b3..3715e3b 100644 --- a/tests/xml2sexprdata/xml2sexpr-curmem.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-curmem.sexpr @@ -1,6 +1,6 @@ (vm (name 'rhel5')(memory 175)(maxmem 385)(vcpus 1)\ (uuid '4f77abd2-3019-58e8-3bab-6fbf2118f880')(bootloader '/usr/bin/pygrub')\ (on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')\ -(device (tap (dev 'xvda')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')))\ +(device (tap (dev 'xvda')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1d:06:15')(bridge 'xenbr0')\ (script 'vif-bridge'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr index b8387e5..ccb2dae 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr @@ -3,5 +3,5 @@ (on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')\ (image (linux (args 'ro root=/dev/VolGroup00/LogVol00')))\ (device (tap (dev 'xvda')(uname 'tap:aio:/var/lib/xen/images/rhel5pv.img')\ -(mode 'w!')))(device (vif (mac '00:16:3e:23:9e:eb')(bridge 'xenbr0')\ +(mode 'w!')(bootable 1)))(device (vif (mac '00:16:3e:23:9e:eb')(bridge 'xenbr0')\ (script 'vif-bridge'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-block.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-block.sexpr index 960801a..04e7853 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-block.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-block.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'phy:/dev/MainVG/GuestLV')(mode 'w'))))\ +(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr index 960801a..04e7853 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'phy:/dev/MainVG/GuestLV')(mode 'w'))))\ +(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr index 1e1b381..2a36b81 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap (dev 'xvda')\ -(uname 'tap:qcow:/root/some.img')(mode 'w'))))\ +(uname 'tap:qcow:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr index 6b66e43..efd46f1 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap (dev 'xvda')\ -(uname 'tap:aio:/root/some.img')(mode 'w'))))\ +(uname 'tap:aio:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr index 6b66e43..efd46f1 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap (dev 'xvda')\ -(uname 'tap:aio:/root/some.img')(mode 'w'))))\ +(uname 'tap:aio:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2-raw.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2-raw.sexpr index 1e79bcf..bba9974 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2-raw.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2-raw.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap2 (dev 'xvda')\ -(uname 'tap2:aio:/root/some.img')(mode 'w'))))\ +(uname 'tap2:aio:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr index 1e79bcf..bba9974 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (tap2 (dev 'xvda')\ -(uname 'tap2:aio:/root/some.img')(mode 'w'))))\ +(uname 'tap2:aio:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr index dac0aa3..fb9189a 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-disk-file.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-file.sexpr index dac0aa3..fb9189a 100644 --- a/tests/xml2sexprdata/xml2sexpr-disk-file.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-disk-file.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-escape.sexpr b/tests/xml2sexprdata/xml2sexpr-escape.sexpr index 7b29131..30b5f65 100644 --- a/tests/xml2sexprdata/xml2sexpr-escape.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-escape.sexpr @@ -7,4 +7,4 @@ core/test/5.91/x86_64/os&version="devel" ')\ (loader '/usr/lib/xen/boot/hvmloader')(vcpus 2)(boot c)(usb 1)(parallel none)\ (serial pty)(device_model '/usr/lib/xen/bin/qemu-dm')))\ -(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/\'\\some.img')(mode 'w'))))\ +(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/\'\\some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr index 400872d..c555d1a 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-force-hpet.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(hpet 1)(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr index 9577892..a8fed77 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(hpet 0)(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr index 4950832..dbd3460 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-kernel.sexpr @@ -7,4 +7,4 @@ core/test/5.91/x86_64/os ')(loader '/usr/lib/xen/boot/hvmloader')(vcpus 2)\ (boot c)(usb 1)(parallel none)(serial pty)\ (device_model '/usr/lib/xen/bin/qemu-dm')))\ -(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/some.img')(mode 'w'))))\ +(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr index 4f91119..de1508c 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (localtime 1)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr index 71df15b..3302fe7 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr @@ -4,5 +4,5 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 1)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr index 7fe2544..3337b94 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr @@ -4,5 +4,5 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 1)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(type netfront))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr index 38504b1..0439815 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel tcp:localhost:9999)\ (serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2-ports.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2-ports.sexpr index f3bfbd7..5d95b12 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2-ports.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2-ports.sexpr @@ -5,5 +5,5 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial (/dev/ttyS0 /dev/ttyS1))(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 1)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2nd-port.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2nd-port.sexpr index 9ecbbe0..c18b248 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2nd-port.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-dev-2nd-port.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial (none /dev/ttyS1))(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr index be40218..4088c29 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-file.sexpr @@ -5,5 +5,5 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial file:/tmp/serial.log)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 1)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr index 40243a7..eea3876 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-null.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial null)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr index 4e2dc78..6cb0d75 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.sexpr @@ -5,5 +5,5 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial pipe:/tmp/serial.pipe)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')\ -(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ +(mode 'w')(bootable 1)))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')\ (script 'vif-bridge')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr index 7ae9315..bc4aeab 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-pty.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial pty)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr index 8369bb4..82ee33d 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial stdio)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp-telnet.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp-telnet.sexpr index 40120cf..a8d1e09 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp-telnet.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp-telnet.sexpr @@ -5,6 +5,6 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial telnet:localhost:9999,server,nowait)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr index 7938a7b..1d2ee6e 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.sexpr @@ -5,6 +5,6 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial tcp:localhost:9999,server,nowait)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr index 3c19f25..8efc64d 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-udp.sexpr @@ -5,6 +5,6 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial udp:localhost:9998@localhost:9999)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr index 67ceeaa..6b59409 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-serial-unix.sexpr @@ -5,6 +5,6 @@ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)\ (serial unix:/tmp/serial.sock,server,nowait)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr index 4c37c35..cef4913 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-sound.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (soundhw 'sb16,es1370')(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr index c0ad2bc..527f9e7 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice mouse)(parallel none)\ (serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr index ff1c695..ecea0a8 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice tablet)(parallel none)\ (serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr index 81fb92d..90bdedc 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr index b27e990..3319e96 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr @@ -4,7 +4,7 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)(vncunused 0)(vncdisplay 17)(keymap 'ja')))\ -(device (vbd (dev 'hda:disk')(uname 'file:/root/foo.img')(mode 'w')))\ -(device (vbd (dev 'hdc:cdrom')(uname 'file:/root/boot.iso')(mode 'r')))\ +(device (vbd (dev 'hda:disk')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ +(device (vbd (dev 'hdc:cdrom')(uname 'file:/root/boot.iso')(mode 'r')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr b/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr index 908ae94..f4e0b73 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr @@ -4,7 +4,7 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')\ (vnc 1)(vncunused 1)(keymap 'ja')))(device (vbd (dev 'hda:disk')\ -(uname 'file:/root/foo.img')(mode 'w')))(device (vbd (dev 'hdc:cdrom')\ -(uname 'file:/root/boot.iso')(mode 'r')))\ +(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))(device (vbd (dev 'hdc:cdrom')\ +(uname 'file:/root/boot.iso')(mode 'r')(bootable 0)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-fv.sexpr b/tests/xml2sexprdata/xml2sexpr-fv.sexpr index 81fb92d..90bdedc 100644 --- a/tests/xml2sexprdata/xml2sexpr-fv.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-fv.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)\ (cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))\ -(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))\ +(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')\ (model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr b/tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr index 0c0c62e..07f690a 100644 --- a/tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-net-bridged.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:11:22:33:44:55')(bridge 'xenbr2')\ (script 'vif-bridge'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr b/tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr index d95ed82..186af90 100644 --- a/tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-net-e1000.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:11:22:33:44:55')(bridge 'xenbr2')\ (script 'vif-bridge')(model 'e1000'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-net-routed.sexpr b/tests/xml2sexprdata/xml2sexpr-net-routed.sexpr index 3430e31..0142eae 100644 --- a/tests/xml2sexprdata/xml2sexpr-net-routed.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-net-routed.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:11:22:33:44:55')(script 'vif-routed')\ (ip '172.14.5.6'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr b/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr index eeebee3..6184f1b 100644 --- a/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr @@ -4,6 +4,6 @@ (image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)\ (apic 1)(pae 1)(usb 1)(parallel none)(serial none)\ (device_model '/usr/lib/xen/bin/qemu-dm')(vnc 1)(vncunused 0)(vncdisplay 6)))\ -(device (vbd (dev 'hda:disk')(uname 'phy:/dev/sda8')(mode 'w')))\ -(device (vbd (dev 'hdc:cdrom')(mode 'r')))\ +(device (vbd (dev 'hda:disk')(uname 'phy:/dev/sda8')(mode 'w')(bootable 1)))\ +(device (vbd (dev 'hdc:cdrom')(mode 'r')(bootable 0)))\ (device (vif (mac '00:16:3e:0a:7b:39')(model 'e1000')(type ioemu))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr b/tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr index fdc48cf..10da264 100644 --- a/tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pci-devs.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')))\ +(uname 'phy:/dev/MainVG/GuestLV')(mode 'w')(bootable 1)))\ (device (pci (dev (domain 0x0001)(bus 0x0c)(slot 0x1b)(func 0x2))\ (dev (domain 0x0000)(bus 0x01)(slot 0x13)(func 0x0)))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr index 236017e..d58f1f4 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr @@ -2,4 +2,4 @@ (uuid '596a5d21-71f4-8fb2-e068-e2386a5c413e')(bootloader '/usr/bin/pygrub')\ (bootloader_args '-q')(on_poweroff 'destroy')(on_reboot 'destroy')\ (on_crash 'destroy')(image (linux (args 'xenfb.video=8,1280,1024')))\ -(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w'))))\ +(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr index c11938e..537709b 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-bootloader.sexpr @@ -2,4 +2,4 @@ (uuid '596a5d21-71f4-8fb2-e068-e2386a5c413e')(bootloader '/usr/bin/pypxeboot')\ (bootloader_args 'mac=AA:00:86:e2:35:72')(on_poweroff 'destroy')\ (on_reboot 'destroy')(on_crash 'destroy')(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr index 589bbdf..5fc4a5e 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-localtime.sexpr @@ -1,6 +1,6 @@ (vm (name 'rhel5')(memory 175)(maxmem 385)(vcpus 1)\ (uuid '4f77abd2-3019-58e8-3bab-6fbf2118f880')(bootloader '/usr/bin/pygrub')\ (on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(localtime 1)\ -(device (tap (dev 'xvda')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')))\ +(device (tap (dev 'xvda')(uname 'tap:aio:/xen/rhel5.img')(mode 'w')(bootable 1)))\ (device (vif (mac '00:16:3e:1d:06:15')(bridge 'xenbr0')\ (script 'vif-bridge'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr index df854ca..af40c12 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-vcpus.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr index 5eb0133..ddce8bc 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))(device (vkbd))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1)))(device (vkbd))\ (device (vfb (type vnc)(vncunused 1)(vnclisten '127.0.0.1')\ (vncpasswd '123456')(keymap 'ja'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr index c74098f..7771618 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr @@ -5,6 +5,6 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w')))(device (vkbd))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1)))(device (vkbd))\ (device (vfb (type vnc)(vncunused 0)(vncdisplay 6)(vnclisten '127.0.0.1')\ (vncpasswd '123456')(keymap 'ja'))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr index 1e22b83..0bdbdcf 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr @@ -6,4 +6,4 @@ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')(vnc 1)(vncunused 0)(vncdisplay 6)\ (vnclisten '127.0.0.1')(vncpasswd '123456')(keymap 'ja')))\ -(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w'))))\ +(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w')(bootable 1))))\ diff --git a/tests/xml2sexprdata/xml2sexpr-pv.sexpr b/tests/xml2sexprdata/xml2sexpr-pv.sexpr index dac0aa3..fb9189a 100644 --- a/tests/xml2sexprdata/xml2sexpr-pv.sexpr +++ b/tests/xml2sexprdata/xml2sexpr-pv.sexpr @@ -5,4 +5,4 @@ (ramdisk '/var/lib/xen/initrd.img.0u-Vhq')\ (args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/\ core/test/5.91/x86_64/os ')))(device (vbd (dev 'xvda')\ -(uname 'file:/root/some.img')(mode 'w'))))\ +(uname 'file:/root/some.img')(mode 'w')(bootable 1))))\ -- 1.7.1

Add support for adding the bootable S-Expr to disks. This is needd for Xen-PV domains using GyPgrub as the boot loader. Signed-off-by: Philipp Hahn <hahn@univention.de> --- src/xen/xend_internal.c | 4 ++-- src/xenxs/xen_sxpr.c | 13 +++++++++++-- src/xenxs/xen_sxpr.h | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index fa39e8b..724e1db 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -2690,7 +2690,7 @@ xenDaemonAttachDeviceFlags(virDomainPtr domain, const char *xml, if (xenFormatSxprDisk(dev->data.disk, &buf, STREQ(def->os.type, "hvm") ? 1 : 0, - priv->xendConfigVersion, 1) < 0) + priv->xendConfigVersion, 1, -1) < 0) goto cleanup; if (dev->data.disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM) { @@ -2858,7 +2858,7 @@ xenDaemonUpdateDeviceFlags(virDomainPtr domain, const char *xml, if (xenFormatSxprDisk(dev->data.disk, &buf, STREQ(def->os.type, "hvm") ? 1 : 0, - priv->xendConfigVersion, 1) < 0) + priv->xendConfigVersion, 1, -1) < 0) goto cleanup; break; diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c index d44b0dc..b78e316 100644 --- a/src/xenxs/xen_sxpr.c +++ b/src/xenxs/xen_sxpr.c @@ -1629,6 +1629,8 @@ xenFormatSxprChr(virDomainChrDefPtr def, * @node: node containing disk description * @buf: a buffer for the result S-Expr * @xendConfigVersion: xend configuration file format + * @isAttach: generate format for online device update + * @isBootable: >0 set, 0 remove, -1 don't touch bootable flag * * Parse the one disk in the XML description and add it to the S-Expr in buf * This is a temporary interface as the S-Expr interface @@ -1642,7 +1644,8 @@ xenFormatSxprDisk(virDomainDiskDefPtr def, virBufferPtr buf, int hvm, int xendConfigVersion, - int isAttach) + int isAttach, + int isBootable) { /* Xend (all versions) put the floppy device config * under the hvm (image (os)) block @@ -1736,6 +1739,12 @@ xenFormatSxprDisk(virDomainDiskDefPtr def, virBufferAddLit(buf, "(mode 'w!')"); else virBufferAddLit(buf, "(mode 'w')"); + + if (isBootable > 0) + virBufferAddLit(buf, "(bootable 1)"); + else if (isBootable == 0) + virBufferAddLit(buf, "(bootable 0)"); + if (def->transient) { XENXS_ERROR(VIR_ERR_CONFIG_UNSUPPORTED, _("transient disks not supported yet")); @@ -2308,7 +2317,7 @@ xenFormatSxpr(virConnectPtr conn, for (i = 0 ; i < def->ndisks ; i++) if (xenFormatSxprDisk(def->disks[i], - &buf, hvm, xendConfigVersion, 0) < 0) + &buf, hvm, xendConfigVersion, 0, -1) < 0) goto error; for (i = 0 ; i < def->nnets ; i++) diff --git a/src/xenxs/xen_sxpr.h b/src/xenxs/xen_sxpr.h index a66c60a..c03c0af 100644 --- a/src/xenxs/xen_sxpr.h +++ b/src/xenxs/xen_sxpr.h @@ -47,7 +47,7 @@ int xenParseSxprSound(virDomainDefPtr def, const char *str); virDomainChrDefPtr xenParseSxprChar(const char *value, const char *tty); int xenFormatSxprDisk(virDomainDiskDefPtr def, virBufferPtr buf, int hvm, - int xendConfigVersion, int isAttach); + int xendConfigVersion, int isAttach, int isBootable); int xenFormatSxprNet(virConnectPtr conn, virDomainNetDefPtr def, virBufferPtr buf, int hvm, -- 1.7.1

On Mon, Oct 31, 2011 at 13:39:09 +0100, Philipp Hahn wrote:
Add support for adding the bootable S-Expr to disks. This is needd for Xen-PV domains using GyPgrub as the boot loader.
Signed-off-by: Philipp Hahn <hahn@univention.de> --- src/xen/xend_internal.c | 4 ++-- src/xenxs/xen_sxpr.c | 13 +++++++++++-- src/xenxs/xen_sxpr.h | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-)
ACK Jirka

Allow /capabilities/guest/features/deviceboot. Signed-off-by: Philipp Hahn <hahn@univention.de> --- docs/schemas/capability.rng | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng index 99b4a9a..0a63a1c 100644 --- a/docs/schemas/capability.rng +++ b/docs/schemas/capability.rng @@ -302,6 +302,11 @@ <empty/> </element> </optional> + <optional> + <element name='deviceboot'> + <empty/> + </element> + </optional> </element> </define> -- 1.7.1

Hello, Ping? At least this patch should qualify for 0.9.7. Currently it's only used by qemu, but currently there's no test case for qemu, which uses deviceboot, so it was never noticed that it's missing in the schema. On Tuesday 01 November 2011 10:27:47 Philipp Hahn wrote:
Allow /capabilities/guest/features/deviceboot.
Signed-off-by: Philipp Hahn <hahn@univention.de> --- docs/schemas/capability.rng | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng index 99b4a9a..0a63a1c 100644 --- a/docs/schemas/capability.rng +++ b/docs/schemas/capability.rng @@ -302,6 +302,11 @@ <empty/> </element> </optional> + <optional> + <element name='deviceboot'> + <empty/> + </element> + </optional> </element> </define>
-- Philipp Hahn Open Source Software Engineer hahn@univention.de Univention GmbH Linux for Your Business fon: +49 421 22 232- 0 Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99 http://www.univention.de/

On Tue, Nov 01, 2011 at 10:27:47 +0100, Philipp Hahn wrote:
Allow /capabilities/guest/features/deviceboot.
Signed-off-by: Philipp Hahn <hahn@univention.de> --- docs/schemas/capability.rng | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
ACK and I agree with this being 0.9.7 material. Jirka

On 11/03/2011 04:10 AM, Jiri Denemark wrote:
On Tue, Nov 01, 2011 at 10:27:47 +0100, Philipp Hahn wrote:
Allow /capabilities/guest/features/deviceboot.
Signed-off-by: Philipp Hahn<hahn@univention.de> --- docs/schemas/capability.rng | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
ACK and I agree with this being 0.9.7 material.
Pushed. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
participants (4)
-
Daniel P. Berrange
-
Eric Blake
-
Jiri Denemark
-
Philipp Hahn