projects/linux·commit 3cb4f09f

[PATCH] mtd_dataflash, fix block vs page erase

3cb4f09f · David Brownell <[email protected]> · 2006-03-13 21:20:40 -08:00

Fix a bug in the block-erase optimization for Dataflash; it was using block
erase even for smaller segments that need page erase.

That wouldn't matter for JFFS2, which never erases less than one block
(sometimes several blocks), but for other callers it might.

Signed-off-by: David Brownell <[email protected]>
Acked-by: David Woodhouse <[email protected]>
Acked-by: Thomas Gleixner <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
3cb4f09fc2e98bbf26f8c900a94bf3910cd4d823
Parents
3759fa9c

Changes

1 files changed · +1 −1

FileStatusAddDelContent
drivers/mtd/devices/mtd_dataflash.cmodified+1−1View file

drivers/mtd/devices/mtd_dataflash.c

View file
diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c
index 155737e..a19480d 100644
--- a/drivers/mtd/devices/mtd_dataflash.c
+++ b/drivers/mtd/devices/mtd_dataflash.c
@@ -178,7 +178,7 @@ static int dataflash_erase(struct mtd_info *mtd, struct erase_info *instr)
* we're at a block boundary and need to erase the whole block.
*/
pageaddr = instr->addr / priv->page_size;
- do_block = (pageaddr & 0x7) == 0 && instr->len <= blocksize;
+ do_block = (pageaddr & 0x7) == 0 && instr->len >= blocksize;
pageaddr = pageaddr << priv->page_offset;
command[0] = do_block ? OP_ERASE_BLOCK : OP_ERASE_PAGE;