• Neil Brown's avatar
    Don't acknowlege that stripe-expand is complete until it really is. · efe31143
    Neil Brown authored
    We shouldn't acknowledge that a stripe has been expanded (When
    reshaping a raid5 by adding a device) until the moved data has
    actually been written out.  However we are currently
    acknowledging (by calling md_done_sync) when the POST_XOR
    is complete and before the write.
    
    So track in s.locked whether there are pending writes, and don't
    call md_done_sync yet if there are.
    
    Note: we all set R5_LOCKED on devices which are are about to
    read from.  This probably isn't technically necessary, but is
    usually done when writing a block, and justifies the use of
    s.locked here.
    
    This bug can lead to a crash if an array is stopped while an reshape
    is in progress.
    
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    efe31143
raid5.c 138 KB