mtd partitions limited to 4 GB?

Charles Manning manningc2 at actrix.gen.nz
Mon Jun 16 20:41:08 EDT 2008


On Tuesday 17 June 2008 12:04:06 Mitch Bradley wrote:
> 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".

As Josh says it is not just an mtd_part issue, but the whole guts of mtd 
suffer from this. The actual mtd_xxx interface to the kernel is close enough 
for most purposes.

I am aware of people using Linux with >4GB of NAND for a long time now (well 
over a year). They did this by writing their own mtd drivers that just fit 
onto the existing interface.  Many people do that anyway because the nand 
core stuff is slow relative to a tailor made driver.

>
> 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
> format.

It is more than just changing the 32 to 64 bit types.



More information about the linux-mtd mailing list