From: Mike Dunn <mikedunn@newsguy.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: David Woodhouse <David.Woodhouse@intel.com>,
linux-mtd@lists.infradead.org,
Shmulik Ladkani <shmulik.ladkani@gmail.com>,
Artem Bityutskiy <dedekind1@gmail.com>
Subject: Re: [PATCH 4/4] MTD: drivers return max_bitflips, mtd returns -EUCLEAN
Date: Fri, 30 Mar 2012 18:05:55 -0700 [thread overview]
Message-ID: <4F765873.6090209@newsguy.com> (raw)
In-Reply-To: <CAN8TOE_Zwg1evBBCSY3zcV6=O07WVyXf2ZOtgf7qgKGLUBcBrQ@mail.gmail.com>
On 03/29/2012 10:30 AM, Brian Norris wrote:
> On Sun, Mar 11, 2012 at 2:21 PM, Mike Dunn <mikedunn@newsguy.com> wrote:
>> The drivers' read methods, absent an error, return a non-negative integer
>> indicating the maximum number of bit errors that were corrected in any one
>> writesize region. MTD returns -EUCLEAN if this is >= euclean_threshold, 0
>> otherwise. Note that this is a subtle change to the driver interface.
>>
>> This and the preceeding patches in this set were tested ubi on top of the
>> nandsim and docg4 devices, running the ubi test io_basic from mtd-utils.
>
> Did you test any non-NAND devices? I'm getting the feeling that some
> of this is misguided or at least needs some fixing. See below.
No, not tested on non-nand yet.
>
>> We may want to also change the name of the macro mtd_is_bitflip(), since this is
>> not really correctly named anymore.
>
> What sort of name change? Shouldn't EUCLEAN still mean bitflip? We are
> just masking the bitflips below a threshold. Anyway, if you have a
> better name, bring it up! I think I changed the name from my original
> choice based on Artem's suggestions, so I'm open to anything with more
> merit :)
>
>> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
>> index 5bbd717..6871658 100644
>> --- a/drivers/mtd/mtdcore.c
>> +++ b/drivers/mtd/mtdcore.c
>> @@ -789,12 +789,24 @@ EXPORT_SYMBOL_GPL(mtd_get_unmapped_area);
>> int mtd_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,
>> u_char *buf)
>> {
>> + int ret_code;
>> *retlen = 0;
>> if (from < 0 || from > mtd->size || len > mtd->size - from)
>> return -EINVAL;
>> if (!len)
>> return 0;
>> - return mtd->_read(mtd, from, len, retlen, buf);
>> +
>> + /*
>> + * In the absence of an error, drivers return a non-negative integer
>> + * representing the maximum number of bitflips that were corrected on
>> + * any one writesize region (typically a NAND page).
>> + */
>> + ret_code = mtd->_read(mtd, from, len, retlen, buf);
>> +
>> + if (unlikely(ret_code < 0))
>> + return ret_code;
>> +
>> + return ret_code >= mtd->euclean_threshold ? -EUCLEAN : 0;
>> }
>
> This seems wrong in the case that mtd->euclean_threshold == 0.
You are correct! Thanks. Devices with no ecc (for which euclean_threshold ==
0) will always return 0 (absent an error), which will result in mtd always
returning -EUCLEAN. Oops! Thanks again.
> This could be the case for any of the following:
> (1) NAND that uses ECC_NONE
> (2) NAND drivers with HW_ECC that don't initialize chip->ecc.strength
> (3) MTD without ECC (e.g., NOR)
> (4) Other drivers that might have missed initializing mtd->ecc_strength
>
> Regarding (1): although ECC_NONE is not recommended, it's possible. I
> don't think this deserves an EUCLEAN message.
>
> Regarding (2): I notice that your nand_base.c code (patch 2) leaves
> ecc.strength initialization up to the driver. I think a sanity check
> could be provided in those cases. For instance, in the NAND_ECC_HW*
> cases, you could warn or error out on 'chip->ecc.strength == 0'.
Yes, I'll include sanity checks in next patches.
> If I'm correct, (3) is quite significant, since non-ECC'd MTDs would
> produce EUCLEAN statuses on every read.
Yup. Again, oops!
Artem, what are your thoughts on fixing these patches, given that many nand
drivers will have to be touched? I'm willing to see it through.
Thanks again Brian,
Mike
next prev parent reply other threads:[~2012-03-31 1:06 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-11 21:21 [PATCH 0/4] MTD: Change meaning of -EUCLEAN return code on reads Mike Dunn
2012-03-11 21:21 ` [PATCH 1/4] MTD: add ecc_strength fields to mtd structs Mike Dunn
2012-03-13 12:25 ` Artem Bityutskiy
2012-03-11 21:21 ` [PATCH 2/4] MTD: flash drivers set ecc strength Mike Dunn
2012-03-13 12:27 ` Artem Bityutskiy
2012-03-16 14:13 ` Ivan Djelic
2012-03-16 20:02 ` Mike Dunn
2012-03-29 17:24 ` Brian Norris
2012-03-31 0:05 ` Mike Dunn
2012-04-02 17:34 ` Mike Dunn
2012-04-03 8:03 ` Ivan Djelic
2012-03-11 21:21 ` [PATCH 3/4] MTD: euclean_threshold added to mtd_info and sysfs Mike Dunn
2012-03-13 12:29 ` Artem Bityutskiy
2012-03-11 21:21 ` [PATCH 4/4] MTD: drivers return max_bitflips, mtd returns -EUCLEAN Mike Dunn
2012-03-14 11:05 ` Shmulik Ladkani
2012-03-14 11:45 ` Shmulik Ladkani
2012-03-29 17:30 ` Brian Norris
2012-03-30 12:13 ` Artem Bityutskiy
2012-03-31 1:17 ` Mike Dunn
2012-04-02 7:17 ` Artem Bityutskiy
2012-04-02 15:33 ` Mike Dunn
2012-03-31 1:05 ` Mike Dunn [this message]
2012-03-31 6:37 ` Shmulik Ladkani
2012-04-02 16:40 ` Mike Dunn
2012-04-03 8:48 ` Shmulik Ladkani
2012-04-13 15:54 ` Artem Bityutskiy
2012-04-13 18:18 ` Mike Dunn
2012-03-13 12:03 ` [PATCH 0/4] MTD: Change meaning of -EUCLEAN return code on reads Artem Bityutskiy
2012-03-13 17:46 ` Mike Dunn
2012-03-13 22:14 ` Mike Dunn
2012-03-14 10:56 ` Artem Bityutskiy
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=4F765873.6090209@newsguy.com \
--to=mikedunn@newsguy.com \
--cc=David.Woodhouse@intel.com \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=linux-mtd@lists.infradead.org \
--cc=shmulik.ladkani@gmail.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;
as well as URLs for NNTP newsgroup(s).