Problem mounting JFFS2

"David Müller (ELSOFT AG)" d.mueller at elsoft.ch
Thu Jul 31 05:31:48 EDT 2003


Hello

Thomas Gleixner wrote:
> On Wednesday 30 July 2003 16:48, David Müller (ELSOFT AG) wrote:
> 
>>Hello
>>
>>I'm trying to get a JFFS2 filesystem on a 64MB NAND flash device working
>>on an ARM based system (running Linux-2.4.21 and the latest MTD CVS code).
>>
>>I prepare the JFFS2 image on my host system like this
>>
>>temp> mkfs.jffs2 --version
>>mkfs.jffs2: revision 1.38
>>
>>temp> mkfs.jffs2 -d targetfs -o targetfs.img -e 16 -l -q -v -n
>>
>>
>>and burn it into the NAND device on the target. If i later try to mount
>>it under Linux with "mount -t jffs2 /dev/mtdblock/1 /mnt", i get the
>>following output:
> 
> 
> How do you burn it into the NAND device ? Are you updating the OOB area ?
> read http://linux-mtd.infradead.org/tech/nand.html
> use nandwrite from the util directory, if you can do it from a running system
> 
> 

I'm using U-Boot's http://sourceforge.net/projects/u-boot "nand" command
to erase and write the NAND flash.

If i use the nandwrite command

# nandwrite --version
nandwrite 1.2

# nandwrite --jffs2 /dev/mtd/1 /tmp/targetfs.img

and mount it, the error is gone but the mounted filesystem is empty (no
files, not directories).

If i write the image using U-Boot's command, then there is the reported
error but the mounted filesystem is populated with directories and some
files (see below) although some files are missing or corrupt.


# ll /mnt/
total 0
drwxr-xr-x    2 0        0               0 Apr 23  2003 bin
drwxr-xr-x    2 0        0               0 Apr  2  2003 dev
drwxr-xr-x    2 0        0               0 Apr  2  2003 dev-state
drwxr-xr-x    2 0        0               0 Apr  2  2003 etc
drwxr-xr-x    2 0        0               0 Apr  2  2003 home
drwxr-xr-x    2 0        0               0 Apr  2  2003 lib
drwxr-xr-x    2 0        0               0 Apr  2  2003 proc
drwxr-xr-x    2 0        0               0 Apr  2  2003 root
drwxr-xr-x    2 0        0               0 Apr  2  2003 sbin
drwxr-xr-x    2 0        0               0 Apr  2  2003 tmp
drwxr-xr-x    2 0        0               0 Apr  2  2003 usr
drwxr-xr-x    2 0        0               0 Apr  2  2003 var
# ll /mnt/bin/
total 391
-rwxr-xr-x    1 0        0          400168 Apr 23  2003 armdemo



>>jffs2: Erase block size too small (16KiB). Using virtual blocks size
>>(32KiB) instead
> 
> 
> That's due to memory consumption. If we have 16KiB eraseblock size we need too 
> much memory to keep track of all eraseblocks. So we use virtual 32KiB blocks 
> instead.
> 
> 

Yes, i know. This was the reason why i had to upgrade to the latest
version of the JFFS2 code, as the version i used before was unable to
handle it.


What really bothers me is this error:

Ino #14 is absent but node not REF_PRISTINE. Reading.
ARGH. About to write node to 0x00004000 on flash, but there are data
already there:
0x00004000: 85 19 02 e0 20 03 00 00 10 25 f5 2e 0e 00 00 00
Write of 1576 bytes at 0x00004000 failed. returned -5, retlen 0
Not marking the space at 0x00004000 as dirty because the flash driver
returned retlen zero
Error writing new dnode: -5



Dave




More information about the linux-mtd mailing list