mtd partitions limited to 4 GB?

Mitch Bradley wmb at
Mon Jun 16 20:04:06 EDT 2008

In drivers/mtd/mtdpart.c, struct mtd_part has  "u_int32_t offset", thus 
(apparently) limiting the partition start offset to 4 GiB.  Similarly, 
struct mtd_partition in include/linux/mtd/partititions.h has "u_int32_t 
size" and "u_int32_offset".

Now that NAND FLASH device sizes have exceeded that, this appears to be 
a significant limitation.

Is anyone in the mtd community already addressing this?

Fixing the core infrastructure might be as simple as using "loff_t" 
instead of "u_int32_t" for those fields.  However, all of the existing 
partition map parsers appear to have the same 32-bit limitation, so 
partitioning a >4GiB device will require a new or modified partition map 

More information about the linux-mtd mailing list