mtd: mtdoops: skip reading initially bad blocks
authorRoman Tereshonkov <roman.tereshonkov@nokia.com>
Fri, 2 Dec 2011 13:07:17 +0000 (15:07 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 26 Jan 2012 00:13:05 +0000 (16:13 -0800)
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

index 0782b31..f3cdce9 100644 (file)
@@ -253,6 +253,9 @@ static void find_next_position(struct mtdoops_context *cxt)
        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,