From: Yu Kuai <yukuai1@huaweicloud.com>
To: Xiao Ni <xni@redhat.com>, Yu Kuai <yukuai1@huaweicloud.com>
Cc: yi.zhang@huawei.com, yangerkun@huawei.com, snitzer@kernel.org,
linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org,
song@kernel.org, dm-devel@redhat.com, guoqing.jiang@linux.dev,
agk@redhat.com, "yukuai (C)" <yukuai3@huawei.com>
Subject: Re: [dm-devel] [PATCH -next v2 4/6] md: refactor idle/frozen_sync_thread() to fix deadlock
Date: Thu, 15 Jun 2023 17:05:22 +0800 [thread overview]
Message-ID: <bacb3159-514c-76e2-ef2e-353cb1a0e30b@huaweicloud.com> (raw)
In-Reply-To: <CALTww2_V=KVLqVVXpXZvGyrmT0N-WG1tFC+HaSEGNfHagaLHug@mail.gmail.com>
Hi,
在 2023/06/15 16:17, Xiao Ni 写道:
>> Thanks for the example. I can understand the usage of it. It's the
>> side effect that removes the mutex protection for idle_sync_thread.
>>
>> There is a problem. New sync thread is started in md_check_recovery.
>> After your patch, md_reap_sync_thread is called in md_check_recovery
>> too. So it looks like they can't happen at the same time?
Of course they can't. md_check_recovery() can only do one thing at a
time.
>
> After thinking a while, there is still a race possibility.
>
> md_reap_sync_thread is called in pers deamon (e.g. raid10d ->
> md_check_recovery) and md_check_recovery returns. Before
> idle_sync_thread is woken, the new sync thread can be started in
> md_check_recovery again.
>
> But it's really strange, when one people echo idle to sync_action.
> It's better to add some messages to notify the users that they need to
> echo idle to sync_action again to have a try. Is there a way that
> md_reap_sync_thread can wait idle_sync_thread?
I don't think this is a problem, echo idle only make sure to interupt
current sync_thread, there is no gurantee that sync_thread is not
running after "echo idle" is done with or without this patchset, before
this patchset, new sync thread can still start after the mutex is
released.
User shoud "echo forzen" instead of "echo idle" if they really what to
avoid new sync_thread to start.
Thanks,
Kuai
>
> Regards
> Xiao
>>
>> Regards
>> Xiao
>>
>>>
>>> Thanks,
>>> Kuai
>>>
>>> --
>>> dm-devel mailing list
>>> dm-devel@redhat.com
>>> https://listman.redhat.com/mailman/listinfo/dm-devel
>
> .
>
next prev parent reply other threads:[~2023-06-15 9:05 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-29 13:20 [PATCH -next v2 0/6] md: fix that MD_RECOVERY_RUNNING can be cleared while sync_thread is still running Yu Kuai
2023-05-29 13:20 ` [PATCH -next v2 1/6] Revert "md: unlock mddev before reap sync_thread in action_store" Yu Kuai
2023-06-13 6:25 ` Xiao Ni
2023-06-13 11:58 ` Yu Kuai
2023-05-29 13:20 ` [PATCH -next v2 2/6] md: refactor action_store() for 'idle' and 'frozen' Yu Kuai
2023-06-13 8:02 ` [dm-devel] " Xiao Ni
2023-06-13 12:00 ` Yu Kuai
2023-06-13 12:25 ` Xiao Ni
2023-06-13 12:44 ` Yu Kuai
2023-06-13 14:14 ` Xiao Ni
2023-05-29 13:20 ` [PATCH -next v2 3/6] md: add a mutex to synchronize idle and frozen in action_store() Yu Kuai
2023-06-13 14:43 ` [dm-devel] " Xiao Ni
2023-06-14 1:15 ` Yu Kuai
2023-06-16 6:41 ` Song Liu
2023-05-29 13:20 ` [PATCH -next v2 4/6] md: refactor idle/frozen_sync_thread() to fix deadlock Yu Kuai
2023-06-13 14:50 ` [dm-devel] " Xiao Ni
2023-06-14 1:48 ` Yu Kuai
2023-06-14 2:04 ` Yu Kuai
2023-06-14 7:12 ` Xiao Ni
2023-06-14 7:38 ` Yu Kuai
2023-06-14 7:57 ` Xiao Ni
2023-06-14 8:28 ` Yu Kuai
2023-06-14 9:08 ` Xiao Ni
2023-06-15 1:28 ` Yu Kuai
2023-06-15 8:01 ` Xiao Ni
2023-06-15 8:17 ` Xiao Ni
2023-06-15 9:05 ` Yu Kuai [this message]
2023-06-15 9:14 ` Xiao Ni
2023-06-14 3:47 ` Xiao Ni
2023-06-14 6:04 ` Yu Kuai
2023-06-14 6:37 ` Xiao Ni
2023-05-29 13:20 ` [PATCH -next v2 5/6] md: wake up 'resync_wait' at last in md_reap_sync_thread() Yu Kuai
2023-06-14 7:20 ` Xiao Ni
2023-05-29 13:20 ` [PATCH -next v2 6/6] md: enhance checking in md_check_recovery() Yu Kuai
2023-06-14 7:24 ` [dm-devel] " Xiao Ni
2023-06-08 2:41 ` [PATCH -next v2 0/6] md: fix that MD_RECOVERY_RUNNING can be cleared while sync_thread is still running Yu Kuai
2023-06-09 4:44 ` Song Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bacb3159-514c-76e2-ef2e-353cb1a0e30b@huaweicloud.com \
--to=yukuai1@huaweicloud.com \
--cc=agk@redhat.com \
--cc=dm-devel@redhat.com \
--cc=guoqing.jiang@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=snitzer@kernel.org \
--cc=song@kernel.org \
--cc=xni@redhat.com \
--cc=yangerkun@huawei.com \
--cc=yi.zhang@huawei.com \
--cc=yukuai3@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®