Patchwork mtdconcat: Fix NAND OOB write

login
register
mail settings
Submitter Felix Radensky
Date April 24, 2011, 10:57 p.m.
Message ID <1303685832-17285-1-git-send-email-felix@embedded-sol.com>
Download mbox | patch
Permalink /patch/92680/
State New
Headers show

Comments

Felix Radensky - April 24, 2011, 10:57 p.m.
Currently mtdconcat is broken for NAND. An attemtpt to create
JFFS2 filesystem on concatenation of several NAND devices fails
with OOB write errors. This patch fixes that problem.

Signed-off-by: Felix Radensky <felix@embedded-sol.com>
---
 drivers/mtd/mtdconcat.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Artem Bityutskiy - April 26, 2011, 7:43 a.m.
On Mon, 2011-04-25 at 01:57 +0300, Felix Radensky wrote:
> Currently mtdconcat is broken for NAND. An attemtpt to create
> JFFS2 filesystem on concatenation of several NAND devices fails
> with OOB write errors. This patch fixes that problem.
> 
> Signed-off-by: Felix Radensky <felix@embedded-sol.com>

Looks like material for -stable, no?
Artem Bityutskiy - April 26, 2011, 7:47 a.m.
On Mon, 2011-04-25 at 01:57 +0300, Felix Radensky wrote:
> Currently mtdconcat is broken for NAND. An attemtpt to create
> JFFS2 filesystem on concatenation of several NAND devices fails
> with OOB write errors. This patch fixes that problem.
> 
> Signed-off-by: Felix Radensky <felix@embedded-sol.com>

Added "Cc: stable@kernel.org" and pushed to l2-mtd-2.6.git, thanks!
Felix Radensky - April 26, 2011, 8 a.m.
Hi Artem,

On 04/26/2011 10:43 AM, Artem Bityutskiy wrote:
> On Mon, 2011-04-25 at 01:57 +0300, Felix Radensky wrote:
>> Currently mtdconcat is broken for NAND. An attemtpt to create
>> JFFS2 filesystem on concatenation of several NAND devices fails
>> with OOB write errors. This patch fixes that problem.
>>
>> Signed-off-by: Felix Radensky<felix@embedded-sol.com>
> Looks like material for -stable, no?

Adding this to -stable would be great.

Felix.

Patch

diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c
index 5060e60..e601672 100644
--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -319,7 +319,7 @@  concat_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops)
 	if (!(mtd->flags & MTD_WRITEABLE))
 		return -EROFS;
 
-	ops->retlen = 0;
+	ops->retlen = ops->oobretlen = 0;
 
 	for (i = 0; i < concat->num_subdev; i++) {
 		struct mtd_info *subdev = concat->subdev[i];
@@ -334,7 +334,7 @@  concat_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops)
 			devops.len = subdev->size - to;
 
 		err = subdev->write_oob(subdev, to, &devops);
-		ops->retlen += devops.retlen;
+		ops->retlen += devops.oobretlen;
 		if (err)
 			return err;