• Shmulik Ladkani's avatar
    UBI: limit amount of reserved eraseblocks for bad PEB handling · 37f758a0
    Shmulik Ladkani authored
    The existing mechanism of reserving PEBs for bad PEB handling has two
    flaws:
    - It is calculated as a percentage of good PEBs instead of total PEBs.
    - There's no limit on the amount of PEBs UBI reserves for future bad
      eraseblock handling.
    
    This patch changes the mechanism to overcome these flaws.
    
    The desired level of PEBs reserved for bad PEB handling (beb_rsvd_level)
    is set to the maximum expected bad eraseblocks (bad_peb_limit) minus the
    existing number of bad eraseblocks (bad_peb_count).
    
    The actual amount of PEBs reserved for bad PEB handling is usually set
    to the desired level (but in some circumstances may be lower than the
    desired level, e.g. when attaching to a device that has too few
    available PEBs to satisfy the desired level).
    
    In the case where the device has too many bad PEBs (above the expected
    limit), then the desired level, and the actual amount of PEBs reserved
    are set to zero. No PEBs will be set aside for future bad eraseblock
    handling - even if some PEBs are made available (e.g. by shrinking a
    volume).
    If another PEB goes bad, and there are available PEBs, then the
    eraseblock will be marked bad (consuming one available PEB). But if
    there are no available PEBs, ubi will go into readonly mode.
    Signed-off-by: default avatarShmulik Ladkani <shmulik.ladkani@gmail.com>
    37f758a0
wl.c 44.9 KB