From: Bean Huo <jackyard88@gmail.com>
To: richard@nod.at, dedekind1@gmail.com, adrian.hunter@intel.com,
computersforpeace@gmail.com, boris.brezillon@free-electrons.com
Cc: beanhuo@micron.com, linux-mtd@lists.infradead.org,
linux-kernel@vger.kernel.org, zszubbocsev@micron.com,
peterpandong@micron.com
Subject: [PATCH v2 00/17] Add a bakvol module in UBI layer for MLC paired page power loss issue
Date: Tue, 2 Feb 2016 02:30:35 +0000 [thread overview]
Message-ID: <1454380252-16170-1-git-send-email-jackyard88@gmail.com> (raw)
From: BeanHuo <beanhuo@micron.com>
These patches aim to solve MLC NAND paired page power loss
issue,by adding a bakvol(backup volume) module in UBI layer.
MLC NAND paired page power loss issue is a known issue so far,
MLC NAND pages are coupled in a sense that if you cut power
while writing to a page, you corrupt not only this page, but
also one of the previous pages which is paired with the current
one.
http://www.linux-mtd.infradead.org/doc/ubifs.html#L_ubifs_mlc
This paired page power loss solution is based on NAND multiple
plane program feature. Dual plane page program method can program
two different plane pages at the same time. as for this solution,
there are three main steps:
1. initialization
While UBI attach process, if ubi first attach MTD to ubi device,
bakvol will be created, and reserve 20 PEBs for bakvol. if not,
scan every PEB to find out bakvol PEB, update a bakvol PEB table
in RAM.
2. recovery
While UBIFS mount, and if there is a power loss, bakvol module will
check if there are lower pages being dameged by last power loss, if
yes, bakvol will apply for one new PEB, move uncorrupted data to this
PEB, and recover dameged data by backup page data in bakvol PEB.
3. backup
if UBI proggrams one lower page, bakvol module will duplicate this lower
page data,and then program source page data and backup page data into two
different plane pages(one is user data volume and another is backup volume)
at the same time through dual plane program command.
If UBI porgrams upper page data, still uses mtd_write() to program. In
another word, backup only implements while program lower page.
These patches have already been tested on Micron 70s/80s MLC NAND.
Any suggestions and comments welcomed.
This version patches based on Linux kernel 4.2-rc7.
v2:
1.Add CRC32 protection for user OOB area data.
2.Move recovery action from attach step to ubifs mount step.
3.Add more comments for some key function.
4.standard multi-plane program function.
5.Standard send-mail patches
Bean Huo (17):
include:mtd:add multi-plane page program command
include:mtd:add multi-plane program in mtd_info
drivers:mtd:add multi-plane page program support in partition layer
drivers:mtd:nand:enable dual plane page program function
drivers:mtd:ubi:add bakvol on-flash and RAM data structures
drivers:mtd:ubi:add bakvol function define in ubi layer
fs:ubifs:add bakvol function define in ubifs layer
drivers:mtd:ubi:disable bakvol function while writing volume table
drivers:mtd:ubi:get PEB according to specfied plane number
drivers:mtd:ubi:enable bakvol function for fastmap operation
drivers:mtd:ubi:add disable/enable bakvol while ubi write
drivers:mtd:ubi:add disable bakvol while ubi detach
drivers:mtd:ubi:add bakvol init while attach ubi
drivers:mtd:ubi:add backup operation in ubi_io_write
fs:ubifs:enable bakvol module and recover operation
driver:mtd:ubi:add new bakvol module in ubi layer
drivers:mtd:ubi: Kconfig Makefile
drivers/mtd/mtdpart.c | 19 +
drivers/mtd/nand/nand_base.c | 405 +++++++++++++
drivers/mtd/ubi/Kconfig | 15 +
drivers/mtd/ubi/Makefile | 2 +-
drivers/mtd/ubi/attach.c | 24 +-
drivers/mtd/ubi/bakvol.c | 1296 ++++++++++++++++++++++++++++++++++++++++++
drivers/mtd/ubi/build.c | 2 +
drivers/mtd/ubi/eba.c | 13 +-
drivers/mtd/ubi/fastmap.c | 2 +-
drivers/mtd/ubi/io.c | 73 ++-
drivers/mtd/ubi/ubi-media.h | 64 +++
drivers/mtd/ubi/ubi.h | 23 +-
drivers/mtd/ubi/vtbl.c | 2 +-
drivers/mtd/ubi/wl.c | 140 +++++
fs/ubifs/super.c | 11 +
fs/ubifs/ubifs.h | 2 +
include/linux/mtd/mtd.h | 19 +
include/linux/mtd/nand.h | 4 +
18 files changed, 2091 insertions(+), 25 deletions(-)
create mode 100644 drivers/mtd/ubi/bakvol.c
--
1.9.1
next reply other threads:[~2016-02-02 2:32 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-02 2:30 Bean Huo [this message]
2016-02-02 2:30 ` [PATCH v2 01/17] include:mtd:add multi-plane page program command Bean Huo
2016-02-02 2:30 ` [PATCH v2 02/17] include:mtd:add multi-plane program in mtd_info Bean Huo
2016-02-02 2:30 ` [PATCH v2 03/17] drivers:mtd:add dual plane page program support in partition layer Bean Huo
2016-02-02 3:00 ` kbuild test robot
2016-02-02 2:30 ` [PATCH v2 04/17] drivers:mtd:nand:enable dual plane page program function Bean Huo
2016-02-02 3:04 ` kbuild test robot
2016-02-02 2:30 ` [PATCH v2 05/17] drivers:mtd:ubi:add bakvol on-flash and RAM data structures Bean Huo
2016-02-02 2:30 ` [PATCH v2 06/17] drivers:mtd:ubi:add bakvol function define in ubi layer Bean Huo
2016-02-02 3:05 ` kbuild test robot
2016-02-02 3:08 ` kbuild test robot
2016-02-02 2:30 ` [PATCH v2 07/17] fs:ubifs:add bakvol function define in ubifs layer Bean Huo
2016-02-02 2:30 ` [PATCH v2 08/17] drivers:mtd:ubi:disable bakvol function while writing volume table Bean Huo
2016-02-02 2:30 ` [PATCH v2 09/17] drivers:mtd:ubi:get PEB according to specfied plane number Bean Huo
2016-02-02 2:30 ` [PATCH v2 10/17] drivers:mtd:ubi:enable bakvol function for fastmap operation Bean Huo
2016-02-02 2:30 ` [PATCH v2 11/17] drivers:mtd:ubi:add disable/enable bakvol while ubi write Bean Huo
2016-02-02 2:30 ` [PATCH v2 12/17] drivers:mtd:ubi:add disable bakvol while ubi detach Bean Huo
2016-02-02 2:30 ` [PATCH v2 13/17] drivers:mtd:ubi:add bakvol init while attach ubi Bean Huo
2016-02-02 2:30 ` [PATCH v2 14/17] drivers:mtd:ubi:add backup operation in ubi_io_write Bean Huo
2016-02-02 3:22 ` kbuild test robot
2016-02-02 2:30 ` [PATCH v2 15/17] fs:ubifs:enable bakvol module and recover operation Bean Huo
2016-02-02 2:30 ` [PATCH v2 16/17] driver:mtd:ubi:add new bakvol module in ubi layer Bean Huo
2016-02-02 2:30 ` [PATCH v2 17/17] drivers:mtd:ubi: Kconfig Makefile Bean Huo
2016-02-02 3:22 ` kbuild test robot
2016-02-02 3:56 ` kbuild test robot
2016-02-02 3:58 ` kbuild test robot
2016-02-02 4:15 ` Bean Huo 霍斌斌 (beanhuo)
2016-02-03 0:46 ` Brian Norris
2016-02-03 6:14 ` Bean Huo 霍斌斌 (beanhuo)
2016-02-02 23:06 ` [PATCH v2 00/17] Add a bakvol module in UBI layer for MLC paired page power loss issue Richard Weinberger
2016-02-03 6:11 ` Bean Huo 霍斌斌 (beanhuo)
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=1454380252-16170-1-git-send-email-jackyard88@gmail.com \
--to=jackyard88@gmail.com \
--cc=adrian.hunter@intel.com \
--cc=beanhuo@micron.com \
--cc=boris.brezillon@free-electrons.com \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=peterpandong@micron.com \
--cc=richard@nod.at \
--cc=zszubbocsev@micron.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;
as well as URLs for NNTP newsgroup(s).