• NeilBrown's avatar
    md: use common code for all calls to ->hot_remove_disk() · 746d3207
    NeilBrown authored
    slot_store and remove_and_add_spares both call ->hot_remove_disk(),
    but with slightly different tests and consequences, which is
    at least untidy and might be buggy.
    
    So modify remove_and_add_spaces() so that it can be asked
    to remove a specific device, and call it from slot_store().
    
    We also clear the Blocked flag to ensure that doesn't prevent
    removal.  The purpose of Blocked is to prevent automatic removal
    by the kernel before an error is acknowledged.
    If the array is read/write then user-space would have not reason
    to remove a device unless it was known to be 'spare' or 'faulty' in
    which it would have already cleared the Blocked flag.
    If the array is read-only, the flag might still be blocked, but
    there is no harm in clearing the flag for read-only arrays.
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    746d3207
md.c 223 KB