mtd partitions limited to 4 GB?
Josh Boyer
jwboyer at gmail.com
Mon Jun 16 20:22:47 EDT 2008
On Mon, 16 Jun 2008 14:04:06 -1000
Mitch Bradley <wmb at firmworks.com> 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".
This is not limited to partitions. The entire MTD subsystem is limited
to 4 GiB sized devices.
> 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?
There have been some that have offered to help in recent weeks. A
brainstorming session of sorts happened on the list a couple of weeks
ago. You might check there for what was decided.
> 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.
IIRC, one of the outcomes of the discussion was to introduce a new
interface so that chips are addressed in block+offset mappings. This
will be better overall, but requires a bit more overhead in the initial
implementation.
josh
More information about the linux-mtd
mailing list