mtd: adapt writebufsize calculation for concat

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Fri Mar 11 10:59:03 EST 2011


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=771df61949cf2d6ae9ff07e209c80693cdbc9302
Commit:     771df61949cf2d6ae9ff07e209c80693cdbc9302
Parent:     cbc6c5e73dfa598b1fa5e67cef28096186e2a7cd
Author:     Holger Brunck <holger.brunck at keymile.com>
AuthorDate: Mon Jan 24 17:45:42 2011 +0100
Committer:  David Woodhouse <David.Woodhouse at intel.com>
CommitDate: Fri Mar 11 14:22:42 2011 +0000

    mtd: adapt writebufsize calculation for concat
    
    If different chips with different writebufsize are concatenated,
    the writebufsize from the concat device has to be taken from
    the device with the largest writebuffer. This writebufsize
    is used later on in the UBI layer for the min I/O size.
    
    Signed-off-by: Holger Brunck <holger.brunck at keymile.com>
    Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
    Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
---
 drivers/mtd/mtdconcat.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c
index 5f5777b..5060e60 100644
--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -750,6 +750,7 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[],	/* subdevices to c
 	struct mtd_concat *concat;
 	uint32_t max_erasesize, curr_erasesize;
 	int num_erase_region;
+	int max_writebufsize = 0;
 
 	printk(KERN_NOTICE "Concatenating MTD devices:\n");
 	for (i = 0; i < num_devs; i++)
@@ -776,7 +777,12 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[],	/* subdevices to c
 	concat->mtd.size = subdev[0]->size;
 	concat->mtd.erasesize = subdev[0]->erasesize;
 	concat->mtd.writesize = subdev[0]->writesize;
-	concat->mtd.writebufsize = subdev[0]->writebufsize;
+
+	for (i = 0; i < num_devs; i++)
+		if (max_writebufsize < subdev[i]->writebufsize)
+			max_writebufsize = subdev[i]->writebufsize;
+	concat->mtd.writebufsize = max_writebufsize;
+
 	concat->mtd.subpage_sft = subdev[0]->subpage_sft;
 	concat->mtd.oobsize = subdev[0]->oobsize;
 	concat->mtd.oobavail = subdev[0]->oobavail;



More information about the linux-mtd-cvs mailing list