linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/14] mtd: nand: improve flash-based BBT robustness
@ 2011-09-07 20:13 Brian Norris
  2011-09-07 20:13 ` [PATCH 01/14] mtd: nand: refactor scanning code Brian Norris
                   ` (13 more replies)
  0 siblings, 14 replies; 31+ messages in thread
From: Brian Norris @ 2011-09-07 20:13 UTC (permalink / raw)
  To: Artem Bityutskiy
  Cc: Kevin Cernekee, Matthieu Castet, Jim Quinlan, linux-mtd,
	Brian Norris, David Woodhouse, Matthew Creech

Hello,

This patch series aims to improve the robustness of flash-based bad
block tables, especially their ECC handling. In fact, most of the
patches simply build up to the changes in patch 9 and 10, with some
following bugfixes and improvements that were discovered as a result of
the optimizations.

It's worth noting here the intended block scrubbing policy so that it
can be checked for soundness and for implementation:

*) a BBT page with uncorrected ECC errors is invalid
*) a BBT page with corrected ECC errors is valid but needs scrubbing
   (erased and rewritten with corrected data)

Upon discovering invalid table page(s), we retry our table versioning in
this order:

(1) Mirrored table of same version
(2) Mirrored table of lesser version
(3) Rescan flash for bad blocks

After yielding the most up-to-date table (from table in flash or from
scanning the device), then if the flash-BBT is out of date or needs
scrubbing, the table should be rewritten.

Let me know how any of this works and if there are particular areas
where documentation or explanation is lacking.

Brian

Brian Norris (14):
  mtd: nand: refactor scanning code
  mtd: nand: do not ignore all ECC errors
  mtd: define `is_ecc_error()' macros
  mtd: utilize `is_ecc_error()' macros
  mtd: nand: remove unnecessary variable
  mtd: nand: fix style
  mtd: nand: begin restructuring check_create
  mtd: nand: remove gotos in `check_create()'
  mtd: nand: report ECC errors properly when reading BBT
  mtd: nand: scrub BBT on ECC errors
  mtd: nand: wait to set BBT version
  mtd: nand: do not scan bad blocks with NAND_BBT_NO_OOB set
  mtd: nand: invalidate cache on unaligned reads
  mtd: nand: switch `check_pattern()' to standard `memcmp()'

 drivers/mtd/inftlcore.c             |    4 +-
 drivers/mtd/mtdchar.c               |    4 +-
 drivers/mtd/mtdconcat.c             |    8 +-
 drivers/mtd/mtdoops.c               |    2 +-
 drivers/mtd/mtdpart.c               |    8 +-
 drivers/mtd/mtdswap.c               |   20 ++--
 drivers/mtd/nand/diskonchip.c       |    2 +-
 drivers/mtd/nand/nand_base.c        |   12 ++-
 drivers/mtd/nand/nand_bbt.c         |  198 ++++++++++++++++++-----------------
 drivers/mtd/nftlcore.c              |    4 +-
 drivers/mtd/onenand/onenand_base.c  |   11 +-
 drivers/mtd/sm_ftl.c                |    4 +-
 drivers/mtd/tests/mtd_pagetest.c    |   28 +++---
 drivers/mtd/tests/mtd_readtest.c    |    2 +-
 drivers/mtd/tests/mtd_speedtest.c   |    8 +-
 drivers/mtd/tests/mtd_stresstest.c  |    2 +-
 drivers/mtd/tests/mtd_subpagetest.c |    9 +-
 drivers/mtd/tests/mtd_torturetest.c |    2 +-
 drivers/mtd/ubi/eba.c               |    2 +-
 drivers/mtd/ubi/io.c                |   27 +++--
 drivers/mtd/ubi/kapi.c              |    3 +-
 drivers/mtd/ubi/misc.c              |    2 +-
 drivers/mtd/ubi/scan.c              |    4 +-
 drivers/mtd/ubi/vtbl.c              |    2 +-
 include/linux/mtd/mtd.h             |    5 +
 25 files changed, 198 insertions(+), 175 deletions(-)

-- 
1.7.5.4

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2011-09-21  6:21 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-07 20:13 [PATCH 00/14] mtd: nand: improve flash-based BBT robustness Brian Norris
2011-09-07 20:13 ` [PATCH 01/14] mtd: nand: refactor scanning code Brian Norris
2011-09-11 13:58   ` Artem Bityutskiy
2011-09-07 20:13 ` [PATCH 02/14] mtd: nand: do not ignore all ECC errors Brian Norris
2011-09-11 13:58   ` Artem Bityutskiy
2011-09-07 20:13 ` [PATCH 03/14] mtd: define `is_ecc_error()' macros Brian Norris
2011-09-11 13:57   ` Artem Bityutskiy
2011-09-19  4:14     ` Artem Bityutskiy
2011-09-19 18:43       ` Brian Norris
2011-09-20  7:19         ` Artem Bityutskiy
2011-09-21  1:30           ` [PATCH v2 03/14] mtd: define `mtd_is_*()' functions Brian Norris
2011-09-21  1:40           ` [PATCH 03/14] mtd: define `is_ecc_error()' macros Brian Norris
2011-09-21  6:24             ` Artem Bityutskiy
2011-09-07 20:13 ` [PATCH 04/14] mtd: utilize " Brian Norris
2011-09-21  1:34   ` [PATCH v2 04/14] mtd: utilize `mtd_is_*()' functions Brian Norris
2011-09-07 20:13 ` [PATCH 05/14] mtd: nand: remove unnecessary variable Brian Norris
2011-09-11 13:58   ` Artem Bityutskiy
2011-09-07 20:13 ` [PATCH 06/14] mtd: nand: fix style Brian Norris
2011-09-11 14:00   ` Artem Bityutskiy
2011-09-07 20:13 ` [PATCH 07/14] mtd: nand: begin restructuring check_create Brian Norris
2011-09-07 20:13 ` [PATCH 08/14] mtd: nand: remove gotos in `check_create()' Brian Norris
2011-09-07 20:13 ` [PATCH 09/14] mtd: nand: report ECC errors properly when reading BBT Brian Norris
2011-09-21  1:35   ` [PATCH v2 " Brian Norris
2011-09-07 20:13 ` [PATCH 10/14] mtd: nand: scrub BBT on ECC errors Brian Norris
2011-09-21  1:35   ` [PATCH v2 " Brian Norris
2011-09-07 20:13 ` [PATCH 11/14] mtd: nand: wait to set BBT version Brian Norris
2011-09-21  1:35   ` [PATCH v2 " Brian Norris
2011-09-07 20:13 ` [PATCH 12/14] mtd: nand: do not scan bad blocks with NAND_BBT_NO_OOB set Brian Norris
2011-09-21  1:36   ` [PATCH v2 " Brian Norris
2011-09-07 20:13 ` [PATCH 13/14] mtd: nand: invalidate cache on unaligned reads Brian Norris
2011-09-07 20:13 ` [PATCH 14/14] mtd: nand: switch `check_pattern()' to standard `memcmp()' Brian Norris

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).