From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: linan666@huaweicloud.com, song@kernel.org, zlliu@suse.com,
neilb@suse.com, shli@fb.com, linux-raid@vger.kernel.org,
linux-kernel@vger.kernel.org, yi.zhang@huawei.com,
houtao1@huawei.com, yangerkun@huawei.com,
"yukuai (C)" <yukuai3@huawei.com>
Subject: Re: [PATCH] md: Don't clear MD_CLOSING when the raid is about to stop
Date: Tue, 12 Dec 2023 10:34:46 +0100 [thread overview]
Message-ID: <20231212103446.00007e41@linux.intel.com> (raw)
In-Reply-To: <f0ab24e5-eb0a-d564-19d4-b72ecedff34f@huaweicloud.com>
On Tue, 12 Dec 2023 11:21:28 +0800
Yu Kuai <yukuai1@huaweicloud.com> wrote:
> Hi,
>
> 在 2023/12/11 17:56, Mariusz Tkaczyk 写道:
> > On Mon, 11 Dec 2023 16:17:14 +0800
> > linan666@huaweicloud.com wrote:
> >
> >> From: Li Nan <linan122@huawei.com>
> >>
> >> The raid should not be opened anymore when it is about to be stopped.
> >> However, other processes can open it again if the flag MD_CLOSING is
> >> cleared before exiting. From now on, this flag will not be cleared when
> >> the raid will be stopped.
> >>
> >> Fixes: 065e519e71b2 ("md: MD_CLOSING needs to be cleared after called
> >> md_set_readonly or do_md_stop") Signed-off-by: Li Nan
> >> <linan122@huawei.com>
> >
> > Hello Li Nan,
> > I was there when I needed to fix this:
> > https://git.kernel.org/pub/scm/linux/kernel/git/song/md.git/commit/?h=md-next&id=c8870379a21fbd9ad14ca36204ccfbe9d25def43
> >
> > For sure, you have to consider applying same solution for array_store
> > "clear". Minor nit below.
> >
> > Thanks,
> > Mariusz
> >
> >> ---
> >> drivers/md/md.c | 8 +++-----
> >> 1 file changed, 3 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/drivers/md/md.c b/drivers/md/md.c
> >> index 4e9fe5cbeedc..ebdfc9068a60 100644
> >> --- a/drivers/md/md.c
> >> +++ b/drivers/md/md.c
> >> @@ -6238,7 +6238,6 @@ static void md_clean(struct mddev *mddev)
> >> mddev->persistent = 0;
> >> mddev->level = LEVEL_NONE;
> >> mddev->clevel[0] = 0;
> >> - mddev->flags = 0;
> >
> > I recommend (safety recommendation):
> > mddev->flags = MD_CLOSING;
>
> Taking a look I think both MD_CLOSING and MD_DELETED should not be
> cleared, however, there is no guarantee that MD_CLOSING will be set
> before md_clean, because mdadm can be removed without running. Hence I
> think just set MD_CLOSING is werid.
>
> I think the proper way is to keep MD_CLOSING and MD_DELETED if they are
> set. However, there is no such api to clear other bits at once. Since
> we're not expecting anyone else to write flags, following maybe
> acceptable:
>
> mddev->flags &= BIT_ULL_MASK(MD_CLOSING) | BIT_ULL_MASK(MD_DELETED);
Yes, MD_CLOSING is a bit number to not a bit value I can assign directly.
Thanks for clarifying!
Mariusz
>
> Or after making sure other flags cannot race, this patch is ok.
>
> Thanks,
> Kuai
>
> >
> > Unless you can prove that other flags cannot race.
> >
> >> mddev->sb_flags = 0;
> >> mddev->ro = MD_RDWR;
> >> mddev->metadata_type[0] = 0;
> >
> > .
> >
>
next prev parent reply other threads:[~2023-12-12 9:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-11 8:17 [PATCH] md: Don't clear MD_CLOSING when the raid is about to stop linan666
2023-12-11 9:56 ` Mariusz Tkaczyk
2023-12-12 3:21 ` Yu Kuai
2023-12-12 9:34 ` Mariusz Tkaczyk [this message]
2024-01-18 1:49 ` Li Nan
2023-12-26 6:24 ` kernel test robot
2023-12-26 12:22 ` Li Nan
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=20231212103446.00007e41@linux.intel.com \
--to=mariusz.tkaczyk@linux.intel.com \
--cc=houtao1@huawei.com \
--cc=linan666@huaweicloud.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=neilb@suse.com \
--cc=shli@fb.com \
--cc=song@kernel.org \
--cc=yangerkun@huawei.com \
--cc=yi.zhang@huawei.com \
--cc=yukuai1@huaweicloud.com \
--cc=yukuai3@huawei.com \
--cc=zlliu@suse.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.