• Artem Bityutskiy's avatar
    UBI: handle more error codes · 6b5c94c6
    Artem Bityutskiy authored
    The UBIFS WL worker may encounter read errors and there is logic
    which makes a decision whether we should do one of:
    
    1. cancel the operation and move the PEB with the read errors to
       the 'erroneous' list;
    2. switch to R/O mode.
    
    ATM, only -EIO errors trigger 1., other errors trigger 2. The idea
    is that if we know we encountered an I/O error, do 1. Otherwise,
    we do not know how to react, and do 2., just in case. E.g., if
    the underlying driver became crazy because of a bug, we do not
    want to harm any data, and switch to R/O mode.
    
    This patch does 2 things:
    1. Makes sure reads from the source PEB always cause 1. This is
       more consistent with other reads which come from the upper
       layers and never cause R/O.
    2. Teaches UBI to do 1. also on -EBADMSG, UBI_IO_BAD_VID_HDR,
       -ENOMEM, and -ETIMEOUT. But this is only when reading the
       target PEB.
    
    This preblems were hunted by Adrian Hunter.
    Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
    6b5c94c6
eba.c 34.3 KB