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