[MTD] Correct partition failed erase address
Linux-MTD Mailing List
linux-mtd at lists.infradead.org
Thu Mar 8 05:59:03 EST 2007
Gitweb: http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=74641d75275936796d239f828b80cb030e9f9b0a
Commit: 74641d75275936796d239f828b80cb030e9f9b0a
Parent: f8a922c7bb4d93bd84b7371a8e2571e667d2afb5
Author: Adrian Hunter <ext-adrian.hunter at nokia.com>
AuthorDate: Thu Mar 8 12:20:12 2007 +0200
Committer: David Woodhouse <dwmw2 at infradead.org>
CommitDate: Thu Mar 8 10:45:04 2007 +0000
[MTD] Correct partition failed erase address
If an erase operation fails, the address at which the
failure occurred is returned by the driver. The MTD
partition must adjust this address (by subtracting the
partition offset) before returning to the caller.
This was not happening, which caused JFFS2 to mark
the wrong block bad!
Signed-off-by: Adrian Hunter <ext-adrian.hunter at nokia.com>
Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
---
drivers/mtd/mtdpart.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 01e4aff..1af9890 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -200,6 +200,11 @@ static int part_erase (struct mtd_info *mtd, struct erase_info *instr)
return -EINVAL;
instr->addr += part->offset;
ret = part->master->erase(part->master, instr);
+ if (ret) {
+ if (instr->fail_addr != 0xffffffff)
+ instr->fail_addr -= part->offset;
+ instr->addr -= part->offset;
+ }
return ret;
}
@@ -560,4 +565,3 @@ EXPORT_SYMBOL_GPL(deregister_mtd_parser);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Nicolas Pitre <nico at cam.org>");
MODULE_DESCRIPTION("Generic support for partitioning of MTD devices");
-
More information about the linux-mtd-cvs
mailing list