u-boot/disk
Stephen Warren d1efb6442a disk: part_dos: don't claim whole-disk FAT filesystems
Logically, a disk that contains a raw FAT filesystem does not in fact
have a partition table. However, test_part_dos() was claiming that such
disks did in fact have a DOS-style partition table. This caused
get_device_and_partition() not to return a whole-disk disk_partition_t,
since part_type != PART_TYPE_UNKNOWN.

part_dos.c's print_partition_extended() detected the raw FAT filesystem
condition and printed a fake partition table that encompassed the whole
disk.

However, part_dos.c's get_partition_info_extended() did not return any
valid partitions in this case. This combination caused
get_device_and_partition() not to find any valid partitions, and hence
to return an error.

Fix test_part_dos() not to claim that raw FAT filesystems are DOS
partition tables. In turn, this causes get_device_and_partition() to
return a whole-disk disk_partition_t, and hence the following commands
work:

fatls mmc 0 /
fatls mmc 0:auto /

An alternative would be to modify print_partition_extended() to detect
raw FAT filesystems, just like print_partition_extended() does, and to
return a fake partition in this case. However, this seems logically
incorrect, and also duplicates code, since get_device_and_partition()
falls back to returning a whole-disk partition when there is no partition
table on the device.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
2012-10-08 11:15:04 -07:00
..
Makefile disk/part.c: Make features optional 2011-07-26 14:10:14 +02:00
part_amiga.c Block: Remove MG DISK support 2012-06-21 20:53:09 +02:00
part_amiga.h * Code cleanup: 2003-06-27 21:31:46 +00:00
part_dos.c disk: part_dos: don't claim whole-disk FAT filesystems 2012-10-08 11:15:04 -07:00
part_dos.h disk: part_msdos: parse and store partition UUID 2012-09-25 15:05:45 -07:00
part_efi.c disk: part_efi: parse and store partition UUID 2012-09-25 15:05:44 -07:00
part_efi.h part: show efi partition name when print out partition info 2011-10-06 20:42:47 +02:00
part_iso.c Block: Remove MG DISK support 2012-06-21 20:53:09 +02:00
part_iso.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
part_mac.c part_mac: dcache: allocate cacheline-aligned buffers 2012-09-02 17:08:31 +02:00
part_mac.h * Code cleanup: 2003-06-27 21:31:46 +00:00
part.c disk: allow - or empty string to fall back to $bootdevice 2012-09-28 09:15:35 -07:00