• NeilBrown's avatar
    md/raid5: consider updating reshape_position at start of reshape. · 92140480
    NeilBrown authored
    md/raid5 only updates ->reshape_position (which is stored in
    metadata and is authoritative) occasionally, but particularly
    when getting closed to ->resync_max as it must be correct
    when ->resync_max is reached.
    
    When mdadm tries to stop an array which is reshaping it will:
     - freeze the reshape,
     - set resync_max to where the reshape has reached.
     - unfreeze the reshape.
    When this happens, the reshape is aborted and then restarted.
    
    The restart doesn't check that resync_max is close, and so doesn't
    update ->reshape_position like it should.
    This results in the reshape stopping, but ->reshape_position being
    incorrect.
    
    So on that first call to reshape_request, make sure ->reshape_position
    is updated if needed.
    Signed-off-by: default avatarNeilBrown <neilb@suse.com>
    92140480
raid5.c 220 KB