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

From: Yu Kuai
Date: Wed Jun 07 2023 - 22:41:27 EST


Hi,

在 2023/05/29 21:20, Yu Kuai 写道:
From: Yu Kuai <yukuai3@xxxxxxxxxx>

Changes in v2:
- rebase for the latest md-next

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.

Any suggestions on this patchset? I already sent regression test
for the deadlock problem for both raid10 and raid456.

Thanks,
Kuai

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() to fix deadlock
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 | 124 +++++++++++++++++++++++++++++--------------
drivers/md/md.h | 5 ++
3 files changed, 88 insertions(+), 42 deletions(-)