Am 03.08.2015 um 15:39 schrieb Andrea Scian:
I think I can find some time to do some performance tests on real hardware.
Can you please help me in finding:
- which benchmark to use (currently I'm using bonnie++ on UBIFS, maybe I
can you just mtd_speedtest)
- where to implement those read
I think the test should be done at the UBI layer if we want to check
the real impact of the additional read sequence, but given the answer I
gave to your other question I'm not sure this is relevant anymore ;-).
I'm not sure whether introducing a read-before-write check is the best solution.
At least we need hard numbers for slow/old SLC NANDs too.
We has such checks already and got rid of them.
commit 657f28f8811c92724db10d18bbbec70d540147d6
Author: Huang Shijie <shijie8@xxxxxxxxx>
Date: Tue Aug 14 22:38:45 2012 -0400
mtd: kill MTD_NAND_VERIFY_WRITE
Although the goal of 657f28f8 was something else.
In general I don't think putting much MTD/ECC logic into UBI is the way to go.
UBI is a layer above MTD and MTD should do as much as possible wrt. ECC.
For the second point I think we can implement it a UBI or MTD level.
I think the former will allow us to easily schedule scrubbing and choose
another block to issue the write to. However I don't really know how to
implement it (I don't really know so much about the UBI code).
Implementing this is not much work.
I've done such hacks for various customers to hunt down hardware issues.
I didn't check before suggesting that, but it seems that the UBI layer
is already doing this check for you [1], so if you're using UBI/UBIFS
you shouldn't worry about bitflips in erased pages: if there is any,
and their presence impact the write result, they should be detected.
AFAICT, the only thing that is not checked is whether the number of
bitflips after a write exceed the bitflips threshold or not, and I
guess this can be added.
IIUC this is a runtime debug check
if (!ubi_dbg_chk_io(ubi))
....
And thus is disabled by default.
That's correct.