@@ -4961,15 +4961,10 @@ action_show(struct mddev *mddev, char *page)
49614961 * @locked: if set, reconfig_mutex will still be held after this function
49624962 * return; if not set, reconfig_mutex will be released after this
49634963 * function return.
4964- * @check_seq: if set, only wait for curent running sync_thread to stop, noted
4965- * that new sync_thread can still start.
49664964 */
4967- static void stop_sync_thread (struct mddev * mddev , bool locked , bool check_seq )
4965+ static void stop_sync_thread (struct mddev * mddev , bool locked )
49684966{
4969- int sync_seq ;
4970-
4971- if (check_seq )
4972- sync_seq = atomic_read (& mddev -> sync_seq );
4967+ int sync_seq = atomic_read (& mddev -> sync_seq );
49734968
49744969 if (!test_bit (MD_RECOVERY_RUNNING , & mddev -> recovery )) {
49754970 if (!locked )
@@ -4990,7 +4985,8 @@ static void stop_sync_thread(struct mddev *mddev, bool locked, bool check_seq)
49904985
49914986 wait_event (resync_wait ,
49924987 !test_bit (MD_RECOVERY_RUNNING , & mddev -> recovery ) ||
4993- (check_seq && sync_seq != atomic_read (& mddev -> sync_seq )));
4988+ (!test_bit (MD_RECOVERY_FROZEN , & mddev -> recovery ) &&
4989+ sync_seq != atomic_read (& mddev -> sync_seq )));
49944990
49954991 if (locked )
49964992 mddev_lock_nointr (mddev );
@@ -5001,7 +4997,7 @@ void md_idle_sync_thread(struct mddev *mddev)
50014997 lockdep_assert_held (& mddev -> reconfig_mutex );
50024998
50034999 clear_bit (MD_RECOVERY_FROZEN , & mddev -> recovery );
5004- stop_sync_thread (mddev , true, true );
5000+ stop_sync_thread (mddev , true);
50055001}
50065002EXPORT_SYMBOL_GPL (md_idle_sync_thread );
50075003
@@ -5010,7 +5006,7 @@ void md_frozen_sync_thread(struct mddev *mddev)
50105006 lockdep_assert_held (& mddev -> reconfig_mutex );
50115007
50125008 set_bit (MD_RECOVERY_FROZEN , & mddev -> recovery );
5013- stop_sync_thread (mddev , true, false );
5009+ stop_sync_thread (mddev , true);
50145010}
50155011EXPORT_SYMBOL_GPL (md_frozen_sync_thread );
50165012
@@ -5035,7 +5031,7 @@ static void idle_sync_thread(struct mddev *mddev)
50355031 return ;
50365032 }
50375033
5038- stop_sync_thread (mddev , false, true );
5034+ stop_sync_thread (mddev , false);
50395035 mutex_unlock (& mddev -> sync_mutex );
50405036}
50415037
@@ -5049,7 +5045,7 @@ static void frozen_sync_thread(struct mddev *mddev)
50495045 return ;
50505046 }
50515047
5052- stop_sync_thread (mddev , false, false );
5048+ stop_sync_thread (mddev , false);
50535049 mutex_unlock (& mddev -> sync_mutex );
50545050}
50555051
@@ -6544,7 +6540,7 @@ void md_stop_writes(struct mddev *mddev)
65446540{
65456541 mddev_lock_nointr (mddev );
65466542 set_bit (MD_RECOVERY_FROZEN , & mddev -> recovery );
6547- stop_sync_thread (mddev , true, false );
6543+ stop_sync_thread (mddev , true);
65486544 __md_stop_writes (mddev );
65496545 mddev_unlock (mddev );
65506546}
@@ -6612,7 +6608,7 @@ static int md_set_readonly(struct mddev *mddev)
66126608 set_bit (MD_RECOVERY_FROZEN , & mddev -> recovery );
66136609 }
66146610
6615- stop_sync_thread (mddev , false, false );
6611+ stop_sync_thread (mddev , false);
66166612 wait_event (mddev -> sb_wait ,
66176613 !test_bit (MD_SB_CHANGE_PENDING , & mddev -> sb_flags ));
66186614 mddev_lock_nointr (mddev );
@@ -6658,7 +6654,7 @@ static int do_md_stop(struct mddev *mddev, int mode)
66586654 set_bit (MD_RECOVERY_FROZEN , & mddev -> recovery );
66596655 }
66606656
6661- stop_sync_thread (mddev , true, false );
6657+ stop_sync_thread (mddev , true);
66626658
66636659 if (mddev -> sysfs_active ||
66646660 test_bit (MD_RECOVERY_RUNNING , & mddev -> recovery )) {
0 commit comments