Hi,

This patch works good for me.

-kcao

On Sat, Jul 12, 2014 at 12:55:08AM +0200, Andreas Henriksson wrote:
> Control: tags -1 + patch
> 
> Hello!
> 
> I'm working on an updated util-linux package (v2.24.2) and was pointed
> to this os-prober bug report.
> 
> In my limited testing I haven't been able to reproduce any problems
> here with os-prober and util-linux 2.24.2.
> 
> I can confirm though that the behaviour of running blkid against
> an extended dos partition has changed. In the new version information
> is correctly reported for those instead of just erroring out.
> 
> The old blkid version (2.20.1) returns error code 2 when running
> against an extended dos partition.
> 
> $ sudo blkid -V
> blkid from util-linux 2.24.2  (libblkid 2.24.0, 24-Apr-2014)
> 
> $ sudo blkid -o export /dev/sda2
> DEVNAME=/dev/sda2
> PTUUID=dd6e951b
> PTTYPE=dos
> PARTUUID=000ae69f-02
> 
> $ sudo blkid /dev/sda2
> /dev/sda2: PTUUID="dd6e951b" PTTYPE="dos" PARTUUID="000ae69f-02"
> 
> 
> I'm attaching a patch that should hopefully help. It tries to make the
> executed codepath similar to what it was by adding an extra check on the
> case where value of TYPE is "" and then exits 0 if it looks like an
> extended dos partition.
> 
> Any feedback would be greatly appreciated.
> 
> Regards,
> Andreas Henriksson

> diff --git a/common.sh b/common.sh
> index 30e245e..8734b62 100644
> --- a/common.sh
> +++ b/common.sh
> @@ -116,6 +116,29 @@ fs_type () {
>       fi
>  }
>  
> +is_dos_extended_partition() {
> +     if type blkid >/dev/null 2>&1; then
> +             local output
> +
> +             output="$(blkid -o export $1)"
> +
> +             # old blkid (util-linux << 2.24) errors out on extended p.
> +             if [ "$?" = "2" ]; then
> +                     return 0
> +             fi
> +
> +             # dos partition type and no filesystem type?...
> +             if echo $output | grep -q ' PTTYPE=dos ' &&
> +                             ! echo $output | grep -q ' TYPE='; then
> +                     return 0
> +             else
> +                     return 1
> +             fi
> +     fi
> +
> +     return 1
> +}
> +
>  parse_proc_mounts () {
>       while read -r line; do
>               set -f
> diff --git a/linux-boot-probes/common/50mounted-tests 
> b/linux-boot-probes/common/50mounted-tests
> index 41e26e6..91b6dd9 100755
> --- a/linux-boot-probes/common/50mounted-tests
> +++ b/linux-boot-probes/common/50mounted-tests
> @@ -20,6 +20,10 @@ elif [ "$types" = ntfs ]; then
>               types='ntfs-3g ntfs'
>       fi
>  elif [ -z "$types" ]; then
> +     if is_dos_extended_partition "$partition"; then
> +             debug "$1 looks like an extended dos partition; skipping"
> +             exit 0
> +     fi
>       if type cryptsetup >/dev/null 2>&1 && \
>          cryptsetup luksDump "$partition" >/dev/null 2>&1; then
>               debug "$1 is a LUKS partition; skipping"


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20141008001247.GA923@hp-mt

Reply via email to