[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <0af5c40f-ccc5-0d4c-3371-6473da9083b7@huaweicloud.com>
Date: Sat, 1 Jul 2023 09:40:19 +0800
From: Li Nan <linan666@...weicloud.com>
To: Song Liu <song@...nel.org>, linan666@...weicloud.com
Cc: guoqing.jiang@...ud.ionos.com, colyli@...e.de, xni@...hat.com,
linux-raid@...r.kernel.org, linux-kernel@...r.kernel.org,
yukuai3@...wei.com, yi.zhang@...wei.com, houtao1@...wei.com,
yangerkun@...wei.com
Subject: Re: [PATCH 2/3] md/raid10: factor out get_rdev_repl_from_mirror()
在 2023/7/1 7:53, Song Liu 写道:
> On Tue, Jun 27, 2023 at 6:58 PM <linan666@...weicloud.com> wrote:
>>
> [...]
>
>>
>> +static void get_rdev_repl_from_mirror(struct raid10_info *mirror,
>> + struct md_rdev **prdev,
>> + struct md_rdev **prrdev)
>> +{
>> + struct md_rdev *rdev, *rrdev;
>> +
>> + rrdev = rcu_dereference(mirror->replacement);
>> + /*
>> + * Read replacement first to prevent reading both rdev and
>> + * replacement as NULL during replacement replace rdev.
>> + */
>> + smp_mb();
>> + rdev = rcu_dereference(mirror->rdev);
>> + if (rdev == rrdev)
>> + rrdev = NULL;
>> +
>> + *prrdev = rrdev;
>> + *prdev = rdev;
>
> I don't think the reduction in duplicated code justifies two output arguments.
>
> How about
>
> static struct md_rdev *dereference_rdev_and_rrdev(struct raid10_info *mirror,
> struct md_rdev **prrdev)
> {
> ...
> *prrdev = xxx;
> return rdev;
> }
>
> So we only have one argument for output.
>
> Also, "from_mirror" in the function name doesn't really add more value.
>
> Thanks,
> Song
> .
I agree. Let me improve this.
--
Thanks,
Nan
Powered by blists - more mailing lists