On Sat, 27 Oct 2012 10:28:20 +0800 majianpeng <majianpeng@xxxxxxxxx> wrote: > With the hard disk capacity of larger,the entire recovery process > becomes longer.So it should increase the frequency. > Supposed the speed of recovery is 100MB/s(i think for HDD is good). > The total time of recovery 4TB hdd is about 666 minutes.So change the > frequency from 16 to 64 times,it's about 10mins. > > Signed-off-by: Jianpeng Ma <majianpeng@xxxxxxxxx> > --- > drivers/md/md.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/md/md.c b/drivers/md/md.c > index 01e25bd..ba328ee 100644 > --- a/drivers/md/md.c > +++ b/drivers/md/md.c > @@ -7446,7 +7446,7 @@ void md_do_sync(struct md_thread *thread) > if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && > ((mddev->curr_resync > mddev->curr_resync_completed && > (mddev->curr_resync - mddev->curr_resync_completed) > - > (max_sectors >> 4)) || > + > (max_sectors >> 6)) || > (j - mddev->curr_resync_completed)*2 > >= mddev->resync_max - mddev->curr_resync_completed > )) { I don't like this - the number '6' is completely arbitrary. The original '4' was never about number of minutes. It was a fraction of the total effort needed. I wanted to make sure you only repeated at most 10% of the required effort (one order of magnitude). >>4 is about 6% and easy to calculate. If you want it to be about time (which I don't object to), then make it about time. Keep track of the last time we updated curr_resync_completed, and if that is more than a few minutes ago, update it again. This is what I said last time - if you want something to be based on time, test the time. If 'echo idle > sync_action' doesn't work (Which it seems it doesn't), then it is OK to just do it in the kernel. NeilBrown
Attachment:
signature.asc
Description: PGP signature