seeking help on JFFS2
JZhang at erinc.com
Tue Nov 5 08:40:31 EST 2002
I am new to MTD/JFFS2. Thanks to Christian Gagnaraud's patch, I got MTD
everytime I use JFFS2 on top of it, I get a kernel oops: "Oops: kernel
bad area, sig: 11"
Here is my setup:
root disk: ramdisk of 16M
host: x86 with cross-compiler
Here is the message of MTD from kernel startup:
Found: Intel 28F016S5
MPC8260ADS Bank 0: Found 4 x8 devices at 0x0 in 32-bit mode
Using word write method
MPC8260ADS flash bank 0: Using static image partition definition
Creating 4 MTD partitions on "MPC8260ADS Bank 0":
0x00000000-0x00700000 : "jffs2-root"
mtd: Giving out device 1 to jffs2-root
0x00700000-0x00740000 : "ppcboot"
mtd: Giving out device 2 to ppcboot
0x00740000-0x00780000 : "environment"
mtd: Giving out device 3 to environment
0x00780000-0x00800000 : "spare"
mtd: Giving out device 4 to spare
Here is how I made oops happen:
mount -t jffs2 /dev/mtdblock1 /mnt/flash
cp -R sbin /mnt/flash
Here is the oops message through ksymoops:
>>NIP; c00e1938 <do_read_onechip+b8/4ec> <=====
Trace; c0011480 <printk+15c/1b4>
Trace; c00df668 <cfi_intelext_read+b4/100>
Trace; c00e3be8 <part_read+68/a0>
Trace; c00a2ba0 <jffs2_mark_node_obsolete+468/88c>
Trace; c00a1fe0 <jffs2_do_reserve_space+264/55c>
Trace; c00a1b90 <jffs2_reserve_space+1b8/2d8>
Trace; c009df2c <jffs2_mkdir+54/454>
Trace; c0041d84 <vfs_mkdir+10c/130>
Trace; c0041e8c <sys_mkdir+e4/108>
Trace; c0003ddc <ret_from_syscall_1+0/b4>
Trace; 1002f4f0 Before first symbol
Trace; 100056c4 Before first symbol
Trace; 1002f2c8 Before first symbol
Trace; 1002ef18 Before first symbol
Trace; 0fecef70 Before first symbol
Trace; 00000000 Before first symbol
Here are what I have tried:
(a) I tried plain JFFS on MTD, and it works. The steps I use:
mount -t jffs /dev/mtdblock1 /mnt/flash
I can then copy/edit/delete from it, and diff shows that
the data is consistant.
So I think MTD layer is fine and the configuration on MTD
part (.config) is fine.
(b) I tried mkfs.jffs2 on both target and my x86 host (with
mkfs.jffs2 -dipc -e0x40000 -p0x700000 -b -o /opt/ipc.jffs2
I then cp it on a mtd device with:
cp /mnt/nfs/ipc.jffs2 /dev/mtd1
the "cp" goes fine, but when I tried to mount & use the
JFFS2 system, within one or two commands, it will give me
the oops with the same reason "kernel access of bad area"
But if I now boot into ppcboot(with JFFS2 capability compiled
in), ppcboot can recognize my JFFS2 files just fine, which
lead me to believe the linux JFFS2 subsystem is the problem.
(c) I then tried disabling the compression for JFFS2 by forcing
return of JFFS2_COMPR_NONE from jffs2_compress() to see if
zlib is a problem. It doesn't seem to have any effect.
Any ideas? I have been reading the mailing list archive and could
not find the answer to this.
Thanks a lot
More information about the linux-mtd