From: Artem Bityutskiy <dedekind1@gmail.com>
To: linux-mtd@lists.infradead.org
Cc: Mike Dunn <mikedunn@newsguy.com>
Subject: [PATCH 00/28] introduce wrappers for mtd interfaces
Date: Fri, 23 Dec 2011 20:10:52 +0200 [thread overview]
Message-ID: <1324663880-22477-1-git-send-email-dedekind1@gmail.com> (raw)
Hi,
this patch-series introduce a bunch of wrappers for mtd interfaces, e.g.:
* mtd_read() for mtd->read()
* mtd_write() for mtd->write()
* mtd_is_locked() form mtd->is_locked()
and so forth for all interfaces found in 'struct mtd_info'.
The motivation is to help Mike Dunn to improve MTD bit-flips handling. He
needs to distinguish between 1,2,3, etc bit-flips. Currently MTD just returns
-EUCLEAN on any amount of bit-flips, which is too coarse for modern NANDs.
E.g., for modern NANDs we do not want UBI to scrub on 1 bit-flip because in
this case it will scrub all the time and will wear the flash out quickly.
So Mike wants to add a new parameter to mtdcore which either the driver
can set or the user can set/override via sysfs: the scrub level - this is
the bit-flip level which is considered dangerous and at which the eraseblock
have to be scrubbed. This depends on the flash HW and ECC, primarily, as well
as on user's reliability requirements.
Anyway wants to return -EUCLEAN only if the bit-flip level is higher or
equivalent to the scrub level. To implement this, he needs to have a place
common for all drivers to inject his code to. Currently it is impossible
because MTD users call directly the driver's functions. With these wrappers
it will become possible.
Additionally, the wrappers will give a possibility to implement input
parameters checking once in the wrapper and to avoid duplicating this in
many places.
This patch-set only substitutes 'mtd->func()' with 'mtd_func()', I used spatch
to do this. But we'd need to do some more work:
1 Find places like
if (mtd->block_isbad)
mtd_block_isbad(...)
and nicify them (possibly move the "if" check to the wrapper)
2 Rename all the function pointers in 'struct mtd_info' in order to
make sure every driver has switched to the wrappers.
3 Move the common input parameters checking to the wrappers
However, these are independent tasks which can be done a bit later, and
I am planning to do this. But I'd like to merge this patch-set during
this merge window. If we have them already upstream by the time we start
doing item 3, it will be way easier to handle build breakages and to do
the interface change smoothly.
Artem.
next reply other threads:[~2011-12-23 18:09 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-23 18:10 Artem Bityutskiy [this message]
2011-12-23 18:10 ` [PATCH 01/28] logfs: rename functions starting with mtd_ Artem Bityutskiy
2011-12-23 18:10 ` [PATCH 02/28] mtd: mtdchar: rename functions Artem Bityutskiy
2011-12-23 18:10 ` [PATCH 03/28] mtd: introduce mtd_erase interface Artem Bityutskiy
2011-12-27 9:22 ` Mike Frysinger
2011-12-27 9:37 ` Artem Bityutskiy
2011-12-27 9:47 ` Artem Bityutskiy
2011-12-27 9:50 ` Mike Frysinger
2011-12-23 18:10 ` [PATCH 04/28] mtd: introduce mtd_point interface Artem Bityutskiy
2011-12-23 18:10 ` [PATCH 05/28] mtd: introduce mtd_unpoint interface Artem Bityutskiy
2011-12-23 18:10 ` [PATCH 06/28] mtd: introduce mtd_get_unmapped_area interface Artem Bityutskiy
2011-12-23 18:10 ` [PATCH 07/28] mtd: introduce mtd_read interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 08/28] mtd: introduce mtd_write interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 09/28] mtd: introduce mtd_panic_write interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 10/28] mtd: introduce mtd_read_oob interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 11/28] mtd: introduce mtd_write_oob interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 12/28] mtd: introduce mtd_get_fact_prot_info interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 13/28] mtd: introduce mtd_read_fact_prot_reg interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 14/28] mtd: introduce mtd_get_user_prot_info interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 15/28] mtd: introduce mtd_read_user_prot_reg interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 16/28] mtd: introduce mtd_write_user_prot_reg interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 17/28] mtd: introduce mtd_lock_user_prot_reg interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 18/28] mtd: introduce mtd_writev interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 19/28] mtd: introduce mtd_sync interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 20/28] mtd: introduce mtd_lock interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 21/28] mtd: introduce mtd_unlock interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 22/28] mtd: introduce mtd_is_locked interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 23/28] mtd: introduce mtd_suspend interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 24/28] mtd: introduce mtd_resume interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 25/28] " Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 26/28] mtd: introduce mtd_block_markbad interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 27/28] mtd: introduce mtd_get_device interface Artem Bityutskiy
2011-12-23 18:11 ` [PATCH 28/28] mtd: introduce mtd_put_device interface Artem Bityutskiy
2011-12-25 14:50 ` [PATCH 00/28] introduce wrappers for mtd interfaces Mike Dunn
2011-12-25 18:51 ` 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=1324663880-22477-1-git-send-email-dedekind1@gmail.com \
--to=dedekind1@gmail.com \
--cc=linux-mtd@lists.infradead.org \
--cc=mikedunn@newsguy.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