md: Recovery speed is wrong
When we calculate the speed of recovery, the numerator that contains the recovery done sectors. It's need to subtract the sectors which don't finish recovery. Signed-off-by: Xiao Ni <xni@redhat.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
af5628f05d
commit
ac7e50a383
|
@ -7376,7 +7376,7 @@ void md_do_sync(struct md_thread *thread)
|
|||
struct mddev *mddev2;
|
||||
unsigned int currspeed = 0,
|
||||
window;
|
||||
sector_t max_sectors,j, io_sectors;
|
||||
sector_t max_sectors,j, io_sectors, recovery_done;
|
||||
unsigned long mark[SYNC_MARKS];
|
||||
unsigned long update_time;
|
||||
sector_t mark_cnt[SYNC_MARKS];
|
||||
|
@ -7652,7 +7652,8 @@ void md_do_sync(struct md_thread *thread)
|
|||
*/
|
||||
cond_resched();
|
||||
|
||||
currspeed = ((unsigned long)(io_sectors-mddev->resync_mark_cnt))/2
|
||||
recovery_done = io_sectors - atomic_read(&mddev->recovery_active);
|
||||
currspeed = ((unsigned long)(recovery_done - mddev->resync_mark_cnt))/2
|
||||
/((jiffies-mddev->resync_mark)/HZ +1) +1;
|
||||
|
||||
if (currspeed > speed_min(mddev)) {
|
||||
|
|
Loading…
Reference in New Issue