On Tue, Mar 13, 2007 at 08:22:48AM -0400, Eric Einhorn wrote:
> Hi -devel,
>
> I ran into an issue with the pyhton tools when using the bootloader option
> in 3.0.4. 4 out of 5 times xen would fail when trying to launch pygrub.
> I tracked the cause down to XendDomainInfo.py''s use of
all_devices_sxpr()
> to find a valid block device. Devices are stored inside a hash, which,
> will come back in an arbitrary order when you iterate it''s values.
In my
> case, 4 out 5 times it would return my swap vbd first and try to launch
> pygrub on it.
>
> Instead, I wanted to use get_vbs() to return the block devices since it
> should return a list in the order they were added with device_add() (from
> XendConfig.py). I then found that in _sxp_to_api() the vbd_refs, as well
> as vif_refs and vtpm_refs are recreated by itterating over the device
> hash. So it seems all that work device_add did to make a neat order list
> was tossed out.
>
> I modified _sxp_to_api to copy the original device _refs lists instead of
> iterating to preserve the original order the devices were created. Also,
> as mentioned earlier, I modified _configureBootloader to use get_vbds() so
> it will have direct access to the ref list. I am able to boot with a
> bootload everytime now and have had no errors.
>
> Attached is a patch for the changes I made against 3.0.4_1 if anyone is
> intersted. Maybe it''ll help someone else.
Thanks for this. I believe that this problem is fixed in xen-unstable (and
has been for a little while) but certainly this patch may be useful to those
using 3.0.4.
Cheers,
Ewan.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel