On some legacy planar 2D Micron NAND devices when a block erase command is issued, occasionally even though a block erase operation successfully completes and returns a pass status, the flash block may not be completely erased. Subsequent operations to this block on very rare cases can result in subtle failures or corruption. These extremely rare cases should nevertheless be considered. These rare occurrences have been observed on partially written blocks. Partially written blocks are not uncommon with UBI/UBIFS. To avoid this rare occurrence, we make sure that at least 15 pages have been programmed to a block before it is erased. In case we find that less than 15 pages have been programmed, additional pages are programmed in the block. The observation is that additional pages rarely need to be written and most of the time UBI/UBIFS erases blocks that contain more programmed pages. Change log: v1-v2: Rebased V1 to latest Linux kernel. Add erase preparation function pointer in nand_manufacturer_ops. Signed-off-by: Bean Huo <beanhuo@xxxxxxxxxx> Reviewed-by: ZOLTAN SZUBBOCSEV <zszubbocsev@xxxxxxxxxx> Bean Huo (2): mtd: core: add erase preparation hook function pointer mtd: core: NAND filling block drivers/mtd/nand/raw/internals.h | 2 + drivers/mtd/nand/raw/nand_base.c | 5 ++ drivers/mtd/nand/raw/nand_micron.c | 119 +++++++++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) -- 2.7.4 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/