From: Brian Norris <computersforpeace@gmail.com>
To: <linux-mtd@lists.infradead.org>
Cc: Dan Carpenter <error27@gmail.com>,
Kulikov Vasiliy <segooon@gmail.com>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Nicolas Ferre <nicolas.ferre@atmel.com>,
Dominik Brodowski <linux@dominikbrodowski.net>,
Peter Wippich <pewi@gw-instruments.de>,
Gabor Juhos <juhosg@openwrt.org>,
Guillaume LECERF <glecerf@gmail.com>,
Jonas Gorski <jonas.gorski@gmail.com>,
Jamie Iles <jamie@jamieiles.com>,
Ivan Djelic <ivan.djelic@parrot.com>,
Robert Jarzmik <robert.jarzmik@free.fr>,
David Woodhouse <David.Woodhouse@intel.com>,
Maxim Levitsky <maximlevitsky@gmail.com>,
Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>,
Kevin Cernekee <cernekee@gmail.com>,
Barry Song <21cnbao@gmail.com>,
Jim Quinlan <jim2101024@gmail.com>,
Andres Salomon <dilinger@queued.net>,
Axel Lin <axel.lin@gmail.com>, Anatolij Gustschin <agust@denx.de>,
Mike Frysinger <vapier@gentoo.org>, Arnd Bergmann <arnd@arndb.de>,
Lei Wen <leiwen@marvell.com>,
Sascha Hauer <s.hauer@pengutronix.de>,
Artem Bityutskiy <artem.bityutskiy@intel.com>,
Florian Fainelli <florian@openwrt.org>,
Artem Bityutskiy <dedekind1@gmail.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Matthieu CASTET <matthieu.castet@parrot.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Shmulik Ladkani <shmulik.ladkani@gmail.com>,
Wolfram Sang <w.sang@pengutronix.de>,
Chuanxiao Dong <chuanxiao.dong@intel.com>,
Joe Perches <joe@perches.com>,
Brian Norris <computersforpeace@gmail.com>,
Roman Tereshonkov <roman.tereshonkov@nokia.com>
Subject: [PATCH v3 3/6] mtd: nand: erase block before marking bad
Date: Mon, 9 Jan 2012 12:23:29 -0800 [thread overview]
Message-ID: <1326140612-26323-4-git-send-email-computersforpeace@gmail.com> (raw)
In-Reply-To: <1326140612-26323-1-git-send-email-computersforpeace@gmail.com>
Many NAND flash systems (especially those with MLC NAND) cannot be
reliably written twice in a row. For instance, when marking a bad block,
the block may already have data written to it, and so we should attempt
to erase the block before writing a bad block marker to its OOB region.
We can ignore erase failures, since the block may be bad such that it
cannot be erased properly; we still attempt to write zeros to its spare
area.
Note that the erase must be performed before the BBT is updated, since
otherwise, nand_erase_nand() would not allow us to erase our "bad
block."
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
---
drivers/mtd/nand/nand_base.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index ead2a12..d5dbe0a 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -397,6 +397,16 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
BUG_ON((chip->options & NAND_NO_WRITE_OOB) &&
!(chip->bbt_options & NAND_BBT_USE_FLASH));
+ /* Erase before writing to OOB and before BBT is updated */
+ if (!(chip->options & NAND_NO_WRITE_OOB)) {
+ struct erase_info einfo;
+ memset(&einfo, 0, sizeof(einfo));
+ einfo.mtd = mtd;
+ einfo.addr = ofs;
+ einfo.len = 1 << chip->phys_erase_shift;
+ nand_erase_nand(mtd, &einfo, 0);
+ }
+
if (chip->bbt_options & NAND_BBT_SCANLASTPAGE)
ofs += mtd->erasesize - mtd->writesize;
--
1.7.5.4
next prev parent reply other threads:[~2012-01-09 20:25 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-09 20:23 [PATCH v3 0/6] NAND BBM + BBT updates Brian Norris
2012-01-09 20:23 ` [PATCH v3 1/6] mtd: nand: add NAND_NO_WRITE_OOB option Brian Norris
2012-01-09 20:23 ` [PATCH v3 2/6] mtd: nand: write bad block marker by default even with BBT Brian Norris
2012-01-09 20:23 ` Brian Norris [this message]
2012-01-13 22:42 ` [PATCH v3 3/6] mtd: nand: erase block before marking bad Artem Bityutskiy
2012-01-13 23:07 ` Brian Norris
2012-01-09 20:23 ` [PATCH v3 4/6] mtd: nand: fix SCAN2NDPAGE check for BBM Brian Norris
2012-01-09 20:23 ` [PATCH v3 5/6] mtd: nand: differentiate 1- vs. 2-byte writes when marking bad blocks Brian Norris
2012-01-09 20:23 ` [PATCH v3 6/6] mtd: nand: correct comment on nand_chip badblockbits Brian Norris
2012-01-10 9:44 ` [PATCH v3 0/6] NAND BBM + BBT updates Sebastian Andrzej Siewior
2012-01-10 18:54 ` Brian Norris
2012-01-11 22:28 ` Artem Bityutskiy
2012-01-12 7:58 ` Shmulik Ladkani
2012-01-13 22:12 ` Artem Bityutskiy
2012-01-16 19:35 ` Shmulik Ladkani
2012-01-12 9:09 ` Sebastian Andrzej Siewior
2012-01-13 22:36 ` Artem Bityutskiy
2012-01-16 20:59 ` Woodhouse, David
2012-01-17 8:23 ` Artem Bityutskiy
2012-01-17 8:27 ` Artem Bityutskiy
2012-01-17 11:19 ` Angus CLARK
2012-01-17 13:06 ` Ivan Djelic
2012-01-18 22:18 ` Brian Norris
2012-01-17 10:22 ` Angus CLARK
2012-01-17 13:33 ` Artem Bityutskiy
2012-01-18 22:04 ` Brian Norris
2012-01-19 9:30 ` Angus CLARK
2012-01-19 9:59 ` Ricard Wanderlof
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=1326140612-26323-4-git-send-email-computersforpeace@gmail.com \
--to=computersforpeace@gmail.com \
--cc=21cnbao@gmail.com \
--cc=David.Woodhouse@intel.com \
--cc=adrian.hunter@intel.com \
--cc=agust@denx.de \
--cc=arnd@arndb.de \
--cc=artem.bityutskiy@intel.com \
--cc=axel.lin@gmail.com \
--cc=bigeasy@linutronix.de \
--cc=cernekee@gmail.com \
--cc=chuanxiao.dong@intel.com \
--cc=dbaryshkov@gmail.com \
--cc=dedekind1@gmail.com \
--cc=dilinger@queued.net \
--cc=error27@gmail.com \
--cc=florian@openwrt.org \
--cc=glecerf@gmail.com \
--cc=ivan.djelic@parrot.com \
--cc=jamie@jamieiles.com \
--cc=jim2101024@gmail.com \
--cc=joe@perches.com \
--cc=jonas.gorski@gmail.com \
--cc=juhosg@openwrt.org \
--cc=kyungmin.park@samsung.com \
--cc=leiwen@marvell.com \
--cc=linux-mtd@lists.infradead.org \
--cc=linux@dominikbrodowski.net \
--cc=matthieu.castet@parrot.com \
--cc=maximlevitsky@gmail.com \
--cc=nicolas.ferre@atmel.com \
--cc=pewi@gw-instruments.de \
--cc=robert.jarzmik@free.fr \
--cc=roman.tereshonkov@nokia.com \
--cc=s.hauer@pengutronix.de \
--cc=segooon@gmail.com \
--cc=shmulik.ladkani@gmail.com \
--cc=vapier@gentoo.org \
--cc=w.sang@pengutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.