JFFS2 access delay
"David Müller (ELSOFT AG)"
d.mueller at elsoft.ch
Tue May 24 08:40:49 EDT 2005
Hello
While playing around with JFFS2 on a NAND flash on an ARM based board,
i'm facing a strange problem:
First i create a tar file (using BusyBox's builtin tar command) on a
fresh formatted JFFS2 filesytems from a directory containing about 500
1kB files like this:
~ # flash_eraseall -j /dev/mtd/1
Erasing 16 Kibyte @ 1ea8000 -- 24 % complete. Cleanmarker written at
1ea8000.
Skipping bad block at 0x01eac000
Erasing 16 Kibyte @ 7dfc000 -- 99 % complete. Cleanmarker written at
7dfc000.
~ # mount -t jffs2 /dev/mtdblock/1 /mnt/hd/
~ # tar -cf /mnt/hd/t.tar /tmp/test
tar: Removing leading '/' from member names
~ # time ls -l /mnt/hd/
-rw-r--r-- 1 root root 769536 Jan 1 00:23 t.tar
real 0m 0.05s
user 0m 0.00s
sys 0m 0.04s
Everything seems to be fine. But if i unmount and remount the JFFS2
partition, the first "ls" to the JFFS2 takes quite some time:
~ # umount /mnt/hd/
~ # mount -t jffs2 /dev/mtdblock/1 /mnt/hd/
~ # time ls -l /mnt/hd/
-rw-r--r-- 1 root root 769536 Jan 1 00:23 t.tar
real 1m 32.68s
user 0m 0.01s
sys 0m 7.13s
During this delay, "jffs2_gcd_mtd1" is consuming a large amount of CPU
time but the rest of the system seems to be well.
If i don't build the tar file directly on the JFFS2 partition, but just
copy the final file over from another partition, there isn't such a delay:
~ # umount /mnt/hd/
~ # mount -t jffs2 /dev/mtdblock/1 /mnt/hd/
~ # time ls -l /mnt/hd/
-rw-r--r-- 1 root root 769536 Jan 1 00:53 t.tar
real 0m 0.07s
user 0m 0.01s
sys 0m 0.04s
I'm using linux 2.6.11. I also gave the latest MTD CVS code a try, but
with the same result.
Does this ring a bell? Any idea how to cure this behaviour?
Dave
More information about the linux-mtd
mailing list