• NeilBrown's avatar
    md: be extra careful not to take a reference to a Faulty device. · f5b67ae8
    NeilBrown authored
    It is important that we never increment rdev->nr_pending on a Faulty
    device as ->hot_remove_disk() assumes that once the Faulty flag is visible
    no code will take a new reference.
    
    Some places take a new reference after only check In_sync.  This should
    be safe as the two are changed together.  However to make the code more
    obviously safe, add checks for 'Faulty' as well.
    
    Note: the actual rule is:
      Never increment nr_pending if  Faulty is set and Blocked is clear,
      never clear Faulty, and never set Blocked without holding a reference
      through nr_pending.
    
    fix build error (Shaohua)
    Signed-off-by: default avatarNeilBrown <neilb@suse.com>
    Signed-off-by: default avatarShaohua Li <shli@fb.com>
    f5b67ae8
raid5.c 224 KB