• NeilBrown's avatar
    md: be cautious about using ->curr_resync_completed for ->recovery_offset · db0505d3
    NeilBrown authored
    The ->recovery_offset shows how much of a non-InSync device is actually
    in sync - how much has been recoveryed.
    
    When performing a recovery, ->curr_resync and ->curr_resync_completed
    follow the device address being recovered and so can be used to update
    ->recovery_offset.
    
    When performing a reshape, ->curr_resync* might follow the device
    addresses (raid5) or might follow array addresses (raid10), so cannot
    in general be used to set ->recovery_offset.  When reshaping backwards,
    ->curre_resync* measures from the *end* of the array-or-device, so is
    particularly unhelpful.
    
    So change the common code in md.c to only use ->curr_resync_complete
    for the simple recovery case, and add code to raid5.c to update
    ->recovery_offset during a forwards reshape.
    Signed-off-by: default avatarNeilBrown <neilb@suse.com>
    Signed-off-by: default avatarShaohua Li <shli@fb.com>
    db0505d3
md.c 243 KB