Request for comments: UBI PEBs as a multiple of erase size

Kevin Paul Herbert kevin.herbert at meraki.net
Tue Sep 13 15:36:47 EDT 2011


I came across a situation where I wanted to be able to use the same pre-built (with UBI) image on two different FLASH devices, one of which having a larger erase size than the other. I actually did not notice that the device I was using had a different erase size, which caused UBI to quietly corrupt my FLASH.

I have a patch to UBI (kernel and ubinize) to store the size of a PEB in the EC header, reject attaching if the PEB size is not equal to or an integer multiple of the erase size, and treat multiple erase blocks as a "cluster" for I/O operations.

I looked through a few months of archives to see if this is a common problem, and I don't see this as being discussed. Is there interest in me publishing this patch for inclusion in the kernel. The only downside I can see of my change is that it adds an additional 32 bit quantity to struct ubi_ec_hdr, reducing the available free header byets from 35 to 31. For backwards compatibility, if this field is zero, I treat it as PEB size == erase size.

It seems to me that having the PEB size in the header, regardless of supporting multiple erase blocks as a single PEB, is a useful consistency check.

Comments please?

Thanks,
Kevin Paul Herbert
Meraki, Inc.




More information about the linux-mtd mailing list