public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH 00/28] introduce wrappers for mtd interfaces
@ 2011-12-23 18:10 Artem Bityutskiy
  2011-12-23 18:10 ` [PATCH 01/28] logfs: rename functions starting with mtd_ Artem Bityutskiy
                   ` (28 more replies)
  0 siblings, 29 replies; 35+ messages in thread
From: Artem Bityutskiy @ 2011-12-23 18:10 UTC (permalink / raw)
  To: linux-mtd; +Cc: Mike Dunn

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.

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2011-12-27  9:50 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-23 18:10 [PATCH 00/28] introduce wrappers for mtd interfaces Artem Bityutskiy
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox