• Richard Genoud's avatar
    UBI: use the whole MTD device size to get bad_peb_limit · ba4087e9
    Richard Genoud authored
    On NAND flash devices, UBI reserves some physical erase blocks (PEB) for
    bad block handling. Today, the number of reserved PEB can only be set as a
    percentage of the total number of PEB in each MTD partition. For example, for a
    NAND flash with 128KiB PEB, 2 MTD partition of 20MiB (mtd0) and 100MiB (mtd1)
    and 2% reserved PEB:
     - the UBI device on mtd0 will have 2 PEB reserved
     - the UBI device on mtd1 will have 16 PEB reserved
    
    The problem with this behaviour is that NAND flash manufacturers give a
    minimum number of valid block (NVB) during the endurance life of the
    device, e.g.:
    
    Parameter             Symbol    Min    Max    Unit      Notes
    --------------------------------------------------------------
    Valid block number     NVB     1004    1024   Blocks     1
    
    From this number we can deduce the maximum number of bad PEB that a device will
    contain during its endurance life: a 128MiB NAND flash (1024 PEB) will not have
    less than 20 bad blocks during the flash endurance life.
    
    But the manufacturer doesn't tell where those bad block will appear. He doesn't
    say either if they will be equally disposed on the whole device (and I'm pretty
    sure they won't). So, according to the datasheets, we should reserve the
    maximum number of bad PEB for each UBI device (worst case scenario: 20 bad
    blocks appears on the smallest MTD partition).
    
    So this patch make UBI use the whole MTD device size to calculate the maximum
    bad expected eraseblocks.
    
    The Kconfig option is in per1024 blocks, thus it can have a default value of 20
    which is *very* common for NAND devices.
    Signed-off-by: default avatarRichard Genoud <richard.genoud@gmail.com>
    Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
    ba4087e9
build.c 40 KB