| From 3538c56329936c78f7d356889908790006d0124c Mon Sep 17 00:00:00 2001 |
| From: Roman Tereshonkov <roman.tereshonkov@nokia.com> |
| Date: Fri, 2 Dec 2011 15:07:17 +0200 |
| Subject: mtd: mtdoops: skip reading initially bad blocks |
| |
| From: Roman Tereshonkov <roman.tereshonkov@nokia.com> |
| |
| commit 3538c56329936c78f7d356889908790006d0124c upstream. |
| |
| Use block_isbad to check and skip the bad blocks reading. |
| This will allow to get rid of the read errors if bad blocks |
| are present initially. |
| |
| Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com> |
| Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> |
| Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/mtd/mtdoops.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/mtd/mtdoops.c |
| +++ b/drivers/mtd/mtdoops.c |
| @@ -253,6 +253,9 @@ static void find_next_position(struct mt |
| size_t retlen; |
| |
| for (page = 0; page < cxt->oops_pages; page++) { |
| + if (mtd->block_isbad && |
| + mtd->block_isbad(mtd, page * record_size)) |
| + continue; |
| /* Assume the page is used */ |
| mark_page_used(cxt, page); |
| ret = mtd->read(mtd, page * record_size, MTDOOPS_HEADER_SIZE, |