
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 :|