diff options
author | NeilBrown | 2017-10-17 07:18:36 +0200 |
---|---|---|
committer | Shaohua Li | 2017-11-09 16:29:40 +0100 |
commit | db0505d320660b6ad92418847e7eca6b61b246ac (patch) | |
tree | 816133610b277b2b24fd682370b36861bb6461ec /drivers/md/dm.c | |
parent | badblocks: fix wrong return value in badblocks_set if badblocks are disabled (diff) | |
download | kernel-qcow2-linux-db0505d320660b6ad92418847e7eca6b61b246ac.tar.gz kernel-qcow2-linux-db0505d320660b6ad92418847e7eca6b61b246ac.tar.xz kernel-qcow2-linux-db0505d320660b6ad92418847e7eca6b61b246ac.zip |
md: be cautious about using ->curr_resync_completed for ->recovery_offset
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: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md/dm.c')
0 files changed, 0 insertions, 0 deletions