[PATCH 0/4] mtd: Fix wrong bad block account in ECC stats

Ezequiel Garcia ezequiel.garcia at free-electrons.com
Fri Mar 21 07:57:40 EDT 2014


This series addresses the wrong bad and bbt block accounting we currently
have in MTD.

Notice that this is a very old issue, probably around since the dawn of time,
and nobody seem to care much about it. However, with the introduction of
the sysfs ECC stats access, it's easier to access this stats and easier to
see the issue.

Currently, a device with eight blocks used for the BBT in the last partition
would show (getting ECC stats from sysfs):

$ cat /sys/class/mtd/mtd2/ecc_stats
       0        0       10        0
       0        0        4        0
       0        0        8        0

The third column is the badblocks field in the ecc_stats structure. The
number of badblocks is obtained for each partition near the end of
allocate_partition(). The partition is scanned for badblocks and this
number is updated. This series fixes this by adding a check for BBT reserved
blocks, showing:

$ cat /sys/class/mtd/mtd2/ecc_stats
       0        0       10        0
       0        0        4        0
       0        0        0        8

The first two patches have already been posted. I'm resending them here for
conveniency.

Ezequiel Garcia (4):
  mtd: Add sysfs attr to expose ECC stats
  mtd: nand: Account the blocks used by the BBT in the ecc_stats
  mtd: Introduce mtd_block_isreserved()
  mtd: Account for BBT blocks when a partition is being allocated

 drivers/mtd/mtdcore.c        | 24 ++++++++++++++++++++++++
 drivers/mtd/mtdpart.c        | 13 ++++++++++++-
 drivers/mtd/nand/nand_base.c |  1 +
 drivers/mtd/nand/nand_bbt.c  | 16 ++++++++++++++++
 include/linux/mtd/mtd.h      |  2 ++
 include/linux/mtd/nand.h     |  1 +
 6 files changed, 56 insertions(+), 1 deletion(-)

-- 
1.9.0




More information about the linux-mtd mailing list