• NeilBrown's avatar
    md/raid5: handle possible race as reshape completes. · 6cbd8148
    NeilBrown authored
    It is possible (though unlikely) for a reshape to be
    interrupted between the time that end_reshape is called
    and the time when raid5_finish_reshape is called.
    
    This can leave conf->reshape_progress set to MaxSector,
    but mddev->reshape_position not.
    
    This combination confused reshape_request() when ->reshape_backwards.
    As conf->reshape_progress is so high, it seems the reshape hasn't
    really begun.  But assuming MaxSector is a valid address only
    leads to sorrow.
    
    So ensure reshape_position and reshape_progress both agree,
    and add an extra check in reshape_request() just in case they don't.
    Signed-off-by: default avatarNeilBrown <neilb@suse.com>
    6cbd8148
raid5.c 221 KB