• N
    md/raid5: replace sh->lock with an 'active' flag. · c4c1663b
    NeilBrown 提交于
    sh->lock is now mainly used to ensure that two threads aren't running
    in the locked part of handle_stripe[56] at the same time.
    
    That can more neatly be achieved with an 'active' flag which we set
    while running handle_stripe.  If we find the flag is set, we simply
    requeue the stripe for later by setting STRIPE_HANDLE.
    
    For safety we take ->device_lock while examining the state of the
    stripe and creating a summary in 'stripe_head_state / r6_state'.
    This possibly isn't needed but as shared fields like ->toread,
    ->towrite are checked it is safer for now at least.
    
    We leave the label after the old 'unlock' called "unlock" because it
    will disappear in a few patches, so renaming seems pointless.
    
    This leaves the stripe 'locked' for longer as we clear STRIPE_ACTIVE
    later, but that is not a problem.
    Signed-off-by: NNeilBrown <neilb@suse.de>
    Reviewed-by: NNamhyung Kim <namhyung@gmail.com>
    c4c1663b
raid5.c 167.3 KB