From: Adrian Hunter <adrian.hunter@intel.com>
To: Baolin Wang <baolin.wang@linaro.org>, Andreas Mohr <andi@lisas.de>
Cc: "Ulf Hansson" <ulf.hansson@linaro.org>,
"Russell King" <rmk+kernel@arm.linux.org.uk>,
"Shawn Lin" <shawn.lin@rock-chips.com>,
"Douglas Anderson" <dianders@chromium.org>,
"Heiko Stübner" <heiko@sntech.de>,
"David Jander" <david@protonic.nl>,
"Hans de Goede" <hdegoede@redhat.com>,
linux-mmc <linux-mmc@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
"Mark Brown" <broonie@kernel.org>,
"Linus Walleij" <linus.walleij@linaro.org>
Subject: Re: [PATCH v4 2/3] mmc: core: Factor out the alignment of erase size
Date: Tue, 6 Sep 2016 10:52:01 +0300 [thread overview]
Message-ID: <57CE75A1.2040109@intel.com> (raw)
In-Reply-To: <CAMz4kuJzqyAEam3RNJga5EERMh6TgXWFoY-uZ8pbm1OZW7uy8g@mail.gmail.com>
On 6/09/2016 9:26 a.m., Baolin Wang wrote:
> Hi Andreas,
>
> On 6 September 2016 at 12:34, Andreas Mohr <andi@lisas.de> wrote:
>> On Tue, Sep 06, 2016 at 10:55:11AM +0800, Baolin Wang wrote:
>>> In order to clean up the mmc_erase() function and do some optimization
>>> for erase size alignment, factor out the guts of erase size alignment
>>> into mmc_align_erase_size() function.
>>>
>>> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
>>> Tested-by: Shawn Lin <shawn.lin@rock-chips.com>
>>> ---
>>> drivers/mmc/core/core.c | 60 +++++++++++++++++++++++++++++------------------
>>> 1 file changed, 37 insertions(+), 23 deletions(-)
>>>
>>> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
>>> index 7d7209d..5f93eef 100644
>>> --- a/drivers/mmc/core/core.c
>>> +++ b/drivers/mmc/core/core.c
>>> @@ -2202,6 +2202,37 @@ out:
>>> return err;
>>> }
>>>
>>> +static unsigned int mmc_align_erase_size(struct mmc_card *card,
>>> + unsigned int *from,
>>> + unsigned int *to,
>>> + unsigned int nr)
>>> +{
>>> + unsigned int from_new = *from, nr_new = nr, rem;
>>> +
>>> + rem = from_new % card->erase_size;
>>> + if (rem) {
>>> + rem = card->erase_size - rem;
>>> + from_new += rem;
>>> + if (nr_new > rem)
>>> + nr_new -= rem;
>>> + else
>>> + return 0;
>>> + }
>>> +
>>> + rem = nr_new % card->erase_size;
>>> + if (rem)
>>> + nr_new -= rem;
>>> +
>>> + if (nr_new == 0)
>>> + return 0;
>>> +
>>> + /* 'from' and 'to' are inclusive */
>>> + *to = from_new + nr_new - 1;
>>> + *from = from_new;
>>> +
>>> + return nr_new;
>>> +}
>>> +
>>> /**
>>> * mmc_erase - erase sectors.
>>> * @card: card to erase
>>> @@ -2234,31 +2265,14 @@ int mmc_erase(struct mmc_card *card, unsigned int from, unsigned int nr,
>>> }
>>>
>>> if (arg == MMC_ERASE_ARG) {
>>> - rem = from % card->erase_size;
>>> - if (rem) {
>>> - rem = card->erase_size - rem;
>>> - from += rem;
>>> - if (nr > rem)
>>> - nr -= rem;
>>> - else
>>> - return 0;
>>> - }
>>> - rem = nr % card->erase_size;
>>> - if (rem)
>>> - nr -= rem;
>>> + nr = mmc_align_erase_size(card, &from, &to, nr);
>>> + if (nr == 0)
>>> + return 0;
>>> + } else {
>>> + /* 'from' and 'to' are inclusive */
>>> + to -= 1;
>>> }
>>>
>>> - if (nr == 0)
>>> - return 0;
>>> -
>>> - to = from + nr;
>>> -
>>> - if (to <= from)
>>> - return -EINVAL;
>>
>> Hmm, this is swallowing -EINVAL behaviour
>> i.e., now possibly violating protocol?
>
> I didn't see what situation will make variable 'to' is less than
> 'from' since I think variable 'nr' is always larger than 0, right? If
> so, we should remove this useless checking. Thanks.
It is checking overflows.
>
>>
>> (this may easily be ok - haven't done an extensive review -
>> but since the commit has that characteristic change,
>> the commit message should contain that detail)
>>
>> Thanks for the cleanup work & HTH,
>>
>> Andreas Mohr
>
>
>
next prev parent reply other threads:[~2016-09-06 7:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-06 2:55 [PATCH v4 1/3] mmc: core: Remove some redundant validations in mmc_erase() function Baolin Wang
2016-09-06 2:55 ` [PATCH v4 2/3] mmc: core: Factor out the alignment of erase size Baolin Wang
2016-09-06 4:34 ` Andreas Mohr
2016-09-06 6:26 ` Baolin Wang
2016-09-06 7:19 ` Andreas Mohr
2016-09-06 8:25 ` Baolin Wang
2016-09-06 7:52 ` Adrian Hunter [this message]
2016-09-06 8:27 ` Baolin Wang
2016-09-06 2:55 ` [PATCH v4 3/3] mmc: core: Optimize the mmc erase size alignment Baolin Wang
2016-09-06 12:17 ` [PATCH v4 1/3] mmc: core: Remove some redundant validations in mmc_erase() function Ulf Hansson
2016-09-06 12:35 ` Baolin Wang
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=57CE75A1.2040109@intel.com \
--to=adrian.hunter@intel.com \
--cc=andi@lisas.de \
--cc=baolin.wang@linaro.org \
--cc=broonie@kernel.org \
--cc=david@protonic.nl \
--cc=dianders@chromium.org \
--cc=hdegoede@redhat.com \
--cc=heiko@sntech.de \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=rmk+kernel@arm.linux.org.uk \
--cc=shawn.lin@rock-chips.com \
--cc=ulf.hansson@linaro.org \
/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.