Problem with mounting JFFS2
Iva Salom
diva at kondor.imp.bg.ac.yu
Thu Aug 3 06:51:37 EDT 2006
Hi!
I am a beginner in all these embedded linux - mtd - jffs stuff. I am using Intel FLASH 28F320 (2 interleaved 16b chips of 8MB, so we have 32bit buswidth) (CFI) with TMS320C5471 platform. I turnd on MTD support, so I have 5 partitions: bootloader (/dev/mtd0), bootloader parameters (/dev/mtd1), kernel image (/dev/mtd2), ROMFS SDRAM image (/dev/mtd5), primary file system, which is romfs (/dev/mtd3) and I want the second to be jffs2 (/dev/mtd4):
c5471_init: CFI FLASH device size: 16384K
Creating 5 MTD partitions on "C5471 CFI":
0x00000000-0x000a0000 : "C5471 Bootloader"
0x000a0000-0x000c0000 : "C5471 Bootloader Parameters"
0x000c0000-0x001c0000 : "C5471 Kernel Image"
0x001c0000-0x00800000 : "C5471 Primary File System"
0x00800000-0x01000000 : "C5471 Secondary File System"
Creating 1 MTD partitions on "SDRAM":
0x00000000-0x006bffe0 : "SDRAM File System"
I have made jffs2 image:
arm-uclinux-mkjffs2 -d ./jffsfolder -l -e 0x00020000 -o jffs2.img >/dev/null
and I loaded it at addresses from 0x00800000, which correspond to fs2, i.e. /dev/mtd4.
When I try to mount jffs2:
# mount -t jffs2 /dev/mtd4 /mnt/ramdisk/tmp
it sends me messages:
jffs2: read_super for device 1f:04
jffs2_scan_eraseblock(): Scanning block at 0x0
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000000: 0xface instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000004: 0x0020 instead
Empty bitmask at 0x00000008
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000000c: 0x5188 instead
jffs2_scan_dirent_node(): Node at 0x00000010
jffs2_get_ino_cache(): ino 1
jffs2_get_ino_cache found 00000000 for ino 1
Allocated inocache at 106dd2c0
jffs2_add_ino_cache: Add 106dd2c0 (ino #1)
jffs2_add_fd_to_list( 1023f6a0, 10219e60 (->00000000))
Dirent "config.last" (hash 0xca144fa2, ino #2
jffs2_scan_inode_node(): Node at 0x00000044
jffs2_get_ino_cache(): ino 2
jffs2_get_ino_cache found 00000000 for ino 2
Allocated inocache at 106dd2d4
jffs2_add_ino_cache: Add 106dd2d4 (ino #2)
Node is ino #2, version 1. Range 0x0-0x1000
jffs2_scan_inode_node(): Node at 0x00001088
jffs2_get_ino_cache(): ino 2
jffs2_get_ino_cache found 106dd2d4 for ino 2
Node is ino #2, version 2. Range 0x1000-0x2000
jffs2_scan_inode_node(): Node at 0x000020cc
jffs2_get_ino_cache(): ino 2
jffs2_get_ino_cache found 106dd2d4 for ino 2
Node is ino #2, version 3. Range 0x2000-0x27c4
jffs2_scan_dirent_node(): Node at 0x000028d4
jffs2_get_ino_cache(): ino 1
jffs2_get_ino_cache found 106dd2c0 for ino 1
jffs2_add_fd_to_list( 1023f6e0, 10219e60 (->1023f6a0))
Dirent "config.last~" (hash 0xaedfc2e3, ino #3
Dirent "config.last" (hash 0xca144fa2, ino #2
jffs2_scan_inode_node(): Node at 0x00002908
jffs2_get_ino_cache(): ino 3
jffs2_get_ino_cache found 00000000 for ino 3
Allocated inocache at 106dd2e8
jffs2_add_ino_cache: Add 106dd2e8 (ino #3)
Node is ino #3, version 1. Range 0x0-0x1000
jffs2_scan_inode_node(): Node at 0x0000394c
jffs2_get_ino_cache(): ino 3
jffs2_get_ino_cache found 106dd2e8 for ino 3
Node is ino #3, version 2. Range 0x1000-0x2000
jffs2_scan_inode_node(): Node at 0x00004990
jffs2_get_ino_cache(): ino 3
jffs2_get_ino_cache found 106dd2e8 for ino 3
Node is ino #3, version 3. Range 0x2000-0x27c4
Found empty flash at 0x5198
Empty flash detected from 0x00005198 to 0x00020000
Block at 0x00000000: free 0x0001ae68, dirty 0x00000010, used 0x00005188
jffs2_scan_eraseblock(): Scanning block at 0x20000
Empty flash detected from 0x00020000 to 0x00040000
Block at 0x00020000 is empty (erased)
jffs2_scan_eraseblock(): Scanning block at 0x40000
Empty flash detected from 0x00040000 to 0x00060000
Block at 0x00040000 is empty (erased)
jffs2_scan_eraseblock(): Scanning block at 0x60000
Empty flash detected from 0x00060000 to 0x00080000
Block at 0x00060000 is empty (erased)
etc., and finally:
Pass 3 complete
jffs2_read_super(): Getting root inode
jffs2_read_inode(): inode->i_ino == 1
getting inocache
jffs2_get_ino_cache(): ino 1
jffs2_get_ino_cache found 106dd2c0 for ino 1
jffs2_read_inode(): Got inocache at 106dd2c0
jffs2_read_inode(): ino #1 nlink is 1
jffs2_get_inode_nodes(): ino #1
Node at 000028d4 is a dirent node
Adding fd "config.last~", ino #3
jffs2_add_fd_to_list( 1023f6a0, 10707d14 (->00000000))
Dirent "config.last~" (hash 0xaedfc2e3, ino #3
Node at 00000010 is a dirent node
Adding fd "config.last", ino #2
jffs2_add_fd_to_list( 1023f6e0, 10707d14 (->1023f6a0))
Dirent "config.last~" (hash 0xaedfc2e3, ino #3
Dirent "config.last" (hash 0xca144fa2, ino #2
jffs2_read_inode() returning
jffs2_read_super(): d_alloc_root()
thread_should_wake(): nr_free_blocks 0, nr_erasing_blocks 63, dirty_size 0x10
thread_should_wake(): return 0
jffs2_garbage_collect_thread(): posle !thread_should_wake
jffs2_garbage_collect_thread sleeping...
JFFS2: Garbage collect thread is pid 37
jffs2_read_super(): pre return sb
thread_should_wake(): nr_free_blocks 0, nr_erasing_blocks 63, dirty_size 0x10
thread_should_wake(): return 0
Starting erase of pending block 0x00620000
Freeing all node refs for eraseblock offset 0x00620000
erase.c: jffs2_free_all_node_refs(): end
jffs2_erase_pending_blocks(): TEST1
jffs2_erase_pending_blocks(): TEST2
jffs2_erase_block(): TEST1
jffs2_erase_block(): TEST2
jffs2_erase_block(): TEST3
do_erase_oneblock(): status_OK = CMD(0x80) = 0x800080
do_erase_oneblock(): chip->state1 = 0
do_erase_oneblock(): chip->state2 = 1
do_erase_o
and there it stops every time, with a few characters more or less. The situation was similar when I erased my flash before mounting the jffs2 (except it found completely empty flash).
Have enyone an idea what I did wrong or what I missed to do? Could a problem be with that thread thing - thread_should_wake()?
Thank you in advance!
Iva
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.infradead.org/pipermail/linux-mtd/attachments/20060803/04f49881/attachment.html
More information about the linux-mtd
mailing list