• N
    md/raid5: fix a recently broken BUG_ON(). · 5af9bef7
    NeilBrown 提交于
    commit 6d183de4
        md/raid5: fix newly-broken locking in get_active_stripe.
    
    simplified a BUG_ON, but removed too much so now it sometimes fires
    when it shouldn't.
    
    When the STRIPE_EXPANDING flag is set, the stripe_head might be on a
    special list while multiple stripe_heads are collected, or it might
    not be on any list, even a 'free' list when the refcount is zero.  As
    long as STRIPE_EXPANDING is set, it will be found and added back to a
    list eventually.
    
    So both of the BUG_ONs which test for the ->lru being empty or not
    need to avoid the case where STRIPE_EXPANDING is set.
    
    The patch which broke this was marked for -stable, so this patch needs
    to be applied to any branch that received 6d183de4
    
    Fixes: 6d183de4
    Cc: stable@vger.kernel.org (any release to which above was applied)
    Signed-off-by: NNeilBrown <neilb@suse.de>
    5af9bef7
raid5.c 196.6 KB