• NeilBrown's avatar
    md: allow number of drives in raid5 to be reduced · ec32a2bd
    NeilBrown authored
    When reshaping a raid5 to have fewer devices, we work from the end of
    the array to the beginning.
    md_do_sync gives addresses to sync_request that go from the beginning
    to the end.  So largely ignore them use the internal state variable
    "reshape_progress" to keep track of what to do next.
    
    Never allow the size to be reduced below the minimum (4 for raid6,
    3 otherwise).
    
    We require that the size of the array has already been reduced before
    the array is reshaped to a smaller size.  This is because simply
    reducing the size is an easily reversible operation, while the reshape
    is immediately destructive and so is not reversible for the blocks at
    the ends of the devices.
    Thus to reshape an array to have fewer devices, you must first write
    an appropriately small size to md/array_size.
    
    When reshape finished, we remove any drives that are no longer
    needed and fix up ->degraded.
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    ec32a2bd
raid5.c 145 KB