Burst read and other improvements

Joakim Tjernlund
2001-12-17T12:58:01Z

Hi all

Previously I reported that enabling burst read on Flash did not improve
performance. That's not true :-(

I have measured the mount time with this command:
time mount /dev/mtdblock4 /jffs2/
(Currently I am mostly intressted in lowering my mount times)

Here is what I get:
No optimization: 10.51 s.
with burst read: 9.12 s.
as above + patch to scan.c: 8.29 s
as above + #define ACCT_PARANOIA_CHECK(jeb) to nothing: 7.95 s.

This is on a MPC860 cpu at 80MHz and 40 MHz bus speed.
Questions:
Is the ACCT_PARANOIA_CHECK still needed?

Does anybody else get better mount times by patching scan.c?
Would be nice if this patch could make it into CVS ...

Jocke

patch to scan.c:
--- scan.c 2001/10/25 12:11:11 1.4
+++ scan.c 2001/12/17 12:43:36
@@ -334,7 +334,7 @@
__u32 scanlen = (jeb->offset + c->sector_size) - *startofs;
__u32 curofs = *startofs;

- buf = kmalloc(min((__u32)PAGE_SIZE, scanlen), GFP_KERNEL);
+ buf = kmalloc(min((__u32)PAGE_SIZE/4, scanlen), GFP_KERNEL);
if (!buf) {
printk(KERN_WARNING "Scan buffer allocation failed\n");
return -ENOMEM;
@@ -343,7 +343,7 @@
ssize_t retlen;
int ret, i;

- ret = c->mtd->read(c->mtd, curofs, min((__u32)PAGE_SIZE,
scanlen), &retlen, (char *)buf);
+ ret = c->mtd->read(c->mtd, curofs, min((__u32)PAGE_SIZE/4,
scanlen), &retlen, (char *)buf);
if(ret) {
D1(printk(KERN_WARNING "jffs2_scan_empty(): Read 0x%x
bytes at 0x%08x returned %d\n", min((__u32)PAGE_SIZE, scanlen), curofs, ret));
kfree(buf);