md:Add place to update ->recovery_cp.
PATCH 2/5 md:Add place to update ->recovery_cp.
In resyncing, recovery_cp only updated when resync aborted or completed. But in md drives,many place used it to judge.So add a place to update.
--- drivers/md/md.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/md/md.c +2 -0
@@ -7454,6 +7454,8 @@ void md_do_sync(struct md_thread *thread)wait_event (mddev->recovery_wait,atomic_read (&mddev->recovery_active) ==0 ); mddev->curr_resync_completed = j; +if (test_bit (MD_RECOVERY_SYNC , &mddev->recovery)) + mddev->recovery_cp = j;set_bit (MD_CHANGE_CLEAN , &mddev->flags);sysfs_notify (&mddev->kobj,NULL ,"sync_completed" ); }
Signature · 1 line
1.7.9.5
Quoted 13 lines · On Sat, 27 Oct 2012 10:28:18 +0800 kernelmail <[email protected]> wrote:
In resyncing,
recovery_cponly updated when resync aborted or completed. But in md drives,many place used it to judge.So add a place to update.Signed-off-by Jianpeng Ma <[email protected]>--- drivers/md/md.c | 2 ++ 1 file changed, 2 insertions(+)drivers/md/md.c +0
-0
drivers/md/md.c void md_do_sync(struct md_thread *thread) · line 7461
Quoted 8 lines
drivers/md/md.c +2
-0@@ -7454,6 +7454,8 @@ void md_do_sync(struct md_thread *thread)wait_event (mddev->recovery_wait,atomic_read (&mddev->recovery_active) ==0 ); mddev->curr_resync_completed = j; +if (test_bit (MD_RECOVERY_SYNC , &mddev->recovery)) + mddev->recovery_cp = j;set_bit (MD_CHANGE_CLEAN , &mddev->flags);sysfs_notify (&mddev->kobj,NULL ,"sync_completed" ); }
This isn't correct. If MD_RECOVERY_REQUESTED, then j might be less than recovery_cp and we don't want to reduce recovery_cp.
If you would like to fix that (i.e. only set recovery_cp if it is less than 'j'), then I'll apply the patch.
NeilBrown
Quoted 27 lines · On Sat, 27 Oct 2012 10:28:18 +0800 kernelmail <[email protected]> wrote:
Quoted 14 lines
In resyncing,
recovery_cponly updated when resync aborted or completed. But in md drives,many place used it to judge.So add a place to update.Signed-off-by Jianpeng Ma <[email protected]>--- drivers/md/md.c | 2 ++ 1 file changed, 2 insertions(+)drivers/md/md.c +0
-0drivers/md/md.c void md_do_sync(struct md_thread *thread) · line 7461
Quoted 8 lines
drivers/md/md.c +2
-0@@ -7454,6 +7454,8 @@ void md_do_sync(struct md_thread *thread)wait_event (mddev->recovery_wait,atomic_read (&mddev->recovery_active) ==0 ); mddev->curr_resync_completed = j; +if (test_bit (MD_RECOVERY_SYNC , &mddev->recovery)) + mddev->recovery_cp = j;set_bit (MD_CHANGE_CLEAN , &mddev->flags);sysfs_notify (&mddev->kobj,NULL ,"sync_completed" ); }This isn't correct. If
MD_RECOVERY_REQUESTED, then j might be less thanrecovery_cpand we don't want to reducerecovery_cp.
Quoted 5 lines
If you would like to fix that (i.e. only set
recovery_cpif it is less than 'j'), then I'll apply the patch.NeilBrown
Ok, i'll modify and resend to you.
Thanks!
Jianpeng