[PATCH v2] MTD: modify mtd api to return bitflip info on read operations

Mike Dunn mikedunn at newsguy.com
Sun Dec 4 09:55:37 EST 2011


On 12/04/2011 06:43 AM, Artem Bityutskiy wrote:
> On Sun, 2011-12-04 at 05:52 -0800, Mike Dunn wrote:
>> On 12/04/2011 12:43 AM, Peter Horton wrote:
>>> On 03/12/2011 20:20, Mike Dunn wrote:
>>>> This patch proposes a change to the mtd API for the purpose of returning to
>>>> the caller information on the number of bit errors corrected by the ecc
>>>> facilities of the device during read operations.  The affected functions are
>>>> read() and read_oob().
>>>>
>>> Do the number of bit-flips mean anything to the higher layers like UBI? 
>>
>> The change was motivated primarily by the desire to get ubifs working well on
>> nand flash.  Currently it works well only on onenand devices where single
>> bitflips are rare and random.  On nand with frequent and consistent bitflips,
>> ubi marks a large portion of the blocks as "bad".
> Well, I think non-onenands are also supported. The very modern NAND
> support has issues because of new problems which did not exist or were
> not visible in the past.


I stand corrected.  Not intended as a knock on UBI :)


>>> As the ECC strength / error rate are a chip dependent thing how do the higher
>>> layers know what is good/normal/bad?
>>
>> Good point.  To be determined.  Probably just another element in the mtd_info
>> struct named ecc_strength or some such.  UBI e.g., can determine a suitable
>> "scrublevel" based on that.
> I think UBI should scrub only if max_bitflips == ecc_strength by
> default. If the driver supplies scrublevel scrub if max_bitflips ==
> scrublevel.


So you're thinking that the driver would supply both ecc_strength and
"scrublevel" (or maybe bb_threshold)?  Would these go into struct mtd_info?

Thanks,
Mike




More information about the linux-mtd mailing list