[Libguestfs] [PATCH] Fix parsing of boot flag in do_part_get_bootable()
Richard W.M. Jones
rjones at redhat.com
Wed Aug 7 11:28:41 UTC 2013
On Wed, Aug 07, 2013 at 01:56:26PM +1000, Paul Mackerras wrote:
> The code in do_part_get_bootable() assumes that if a partition has the
> bootable flag set, then that is the only flag. It compares the entire
> flags field with the string "boot". However, the boot flag isn't
> always the only flag. For instance, POWER systems typically have a
> bootable partition of type 0x41 (PPC PReP boot), which parted -m
> displays as:
>
> # parted -m -- f18.img unit b print
> BYT;
> /root/f18.img:16106127360B:file:512:512:msdos::;
> 1:1048576B:5242879B:4194304B:::boot, prep;
>
> That is, the flags field contains "boot, prep", and thus libguestfs
> fails to see that this partition is bootable. Ultimately this causes
> virt-resize to fail to set the bootable flag on the boot partition of
> the destination image, resulting in an image that won't boot.
>
> This patch fixes the problem by searching for the string "boot" within
> the flags field, instead of comparing the whole flags field.
>
> ---
> --- libguestfs-1.22.5/daemon/parted.c~ 2013-02-03 00:47:53.000000000 +1100
> +++ libguestfs-1.22.5/daemon/parted.c 2013-08-02 11:16:49.921790245 +1000
> @@ -628,7 +628,7 @@
> if (boot == NULL)
> return -1;
>
> - return STREQ (boot, "boot");
> + return strstr (boot, "boot") != NULL;
> }
> else {
> /* Old-style: First look for the line matching "^Number". */
Thanks - ACKed and pushed.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
More information about the Libguestfs
mailing list