• NeilBrown's avatar
    md/bitmap: It is OK to clear bits during recovery. · 961902c0
    NeilBrown authored
    commit d0a4bb49 introduced a
    regression which is annoying but fairly harmless.
    
    When writing to an array that is undergoing recovery (a spare
    in being integrated into the array), writing to the array will
    set bits in the bitmap, but they will not be cleared when the
    write completes.
    
    For bits covering areas that have not been recovered yet this is not a
    problem as the recovery will clear the bits.  However bits set in
    already-recovered region will stay set and never be cleared.
    This doesn't risk data integrity.  The only negatives are:
     - next time there is a crash, more resyncing than necessary will
       be done.
     - the bitmap doesn't look clean, which is confusing.
    
    While an array is recovering we don't want to update the
    'events_cleared' setting in the bitmap but we do still want to clear
    bits that have very recently been set - providing they were written to
    the recovering device.
    
    So split those two needs - which previously both depended on 'success'
    and always clear the bit of the write went to all devices.
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    961902c0
bitmap.c 55.1 KB