disk/part_dos: check harder for partition table
authorEgbert Eich <eich@suse.com>
Tue, 9 Apr 2013 05:46:14 +0000 (05:46 +0000)
committerTom Rini <trini@ti.com>
Wed, 1 May 2013 20:24:01 +0000 (16:24 -0400)
commit9d956e0fefa39ba49250f61e3c7aa3dadafdb7fd
treeb8c238604b78488bb74da32112bfd8369e15e8f9
parent8bfa195e4e7ecbbabd4f070a3640212a5ac4ebde
disk/part_dos: check harder for partition table

Devices that used to have a whole disk FAT filesystem but got then
partitioned will most likely still have a FAT or FAT32 signature
in the first sector as this sector does not get overwritten by
a partitioning tool (otherwise the tool would risk to kill the mbr).

The current partition search algorithm will erronously detects such
a device as a raw FAT device.

Instead of looking for the FAT or FAT32 signatures immediately we
use the same algorithm as used by the Linux kernel and first check
for a valid boot indicator flag on each of the 4 partitions.
If the value of this flag is invalid for the first entry we then
do the raw partition check.
If the flag for any higher partition is wrong we assume the device
is neiter a MBR nor PBR device.

Signed-off-by: Egbert Eich <eich@suse.com>
disk/part_dos.c