[-next,0/6] md: fix that MD_RECOVERY_RUNNING can be cleared while sync_thread is still running

Message ID 20230322064122.2384589-1-yukuai1@huaweicloud.com
Headers
Series md: fix that MD_RECOVERY_RUNNING can be cleared while sync_thread is still running |

Message

Yu Kuai March 22, 2023, 6:41 a.m. UTC
  From: Yu Kuai <yukuai3@huawei.com>

Patch 1 revert the commit because it will cause MD_RECOVERY_RUNNING to be
cleared while sync_thread is still running. The deadlock this patch tries
to fix will be fixed by patch 2-5.

Patch 6 enhance checking to prevent MD_RECOVERY_RUNNING to be cleared
while sync_thread is still running.

Yu Kuai (6):
  Revert "md: unlock mddev before reap sync_thread in action_store"
  md: refactor action_store() for 'idle' and 'frozen'
  md: add a mutex to synchronize idle and frozen in action_store()
  md: refactor idle/frozen_sync_thread()
  md: wake up 'resync_wait' at last in md_reap_sync_thread()
  md: enhance checking in md_check_recovery()

 drivers/md/dm-raid.c |   1 -
 drivers/md/md.c      | 125 +++++++++++++++++++++++++++++--------------
 drivers/md/md.h      |   5 ++
 3 files changed, 89 insertions(+), 42 deletions(-)