[Yaffs] yaffs2 mount failure after sometime

Top Page
Attachments:
Message as email
+ (text/plain)
+ mountlog.txt.bz2 (application/x-bzip2)
Delete this message
Reply to this message
Author: Raj Kumar Yadav
Date:  
To: yaffs
Subject: [Yaffs] yaffs2 mount failure after sometime
Hi,

I am using ARM9 based board with 512MB large page(2K page, 256K
Block) nand flash. The linux kernel version is 2.6.14 with yaffs
source on date July
12, 2007 from http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2/.

The unpatched file yaffs2/yaffs_mtdif2.c is updated with
yaffs2/patches/yaffs_mtdif2.c
with some variable name fix to make is compilable.

The yaffs cofiguration is as follows:

CONFIG_YAFFS_FS=y
CONFIG_YAFFS_YAFFS1=y
# CONFIG_YAFFS_DOES_ECC is not set
CONFIG_YAFFS_YAFFS2=y
CONFIG_YAFFS_AUTO_YAFFS2=y
# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
# CONFIG_JFFS_FS is not set


In the nand flash, there are 5 partition with last partition as
~450MB. The kernel boots up
from 2nd partition which have readonly yaffs2 image as rootfs. After
bootup, we are
mounting this ~450MB partition as yaffs2 and do read/write operation
as needed. We
are sometime shutting down the board without unmounting the ~450MB partition.

After many mount/read/write/unmount, the device failes in mounting the
~450MB partition
with following logs.

/ # mount -t yaffs2 /dev/mtdblock4 /pvr
yaffs: dev is 32505860 name is "mtdblock4"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.4, "mtdblock4"
mount: Mounting /dev/mtdblock4 on /pvr failed: Invalid argument
/ #


The cat /proc/yaffs is as follows:

/ # cat /proc/yaffs
YAFFS built:Jul 25 2007 22:51:08
$Id: yaffs_fs.c,v 1.2 2007/07/12 15:03:10 msingh Exp $
$Id: yaffs_guts.c,v 1.2 2007/07/12 15:03:10 msingh Exp $

Device 0 ""
startBlock......... 0
endBlock........... 127
nDataBytesPerChunk. 2048
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 54
nReservedBlocks.... 5
nCheckptResBlocks.. 10
blocksInCheckpoint. 0
nTnodesCreated..... 800
nFreeTnodes........ 70
nObjectsCreated.... 400
nFreeObjects....... 89
nFreeChunks........ 7088
nPageWrites........ 0
nPageReads......... 0
nBlockErasures..... 3
nGCCopies.......... 384
garbageCollections. 3
passiveGCs......... 3
nRetriedWrites..... 0
nShortOpCaches..... 10
nRetireBlocks...... 0
eccFixed........... 0
eccUnfixed......... 0
tagsEccFixed....... 0
tagsEccUnfixed..... 0
cacheHits.......... 0
nDeletedFiles...... 0
nUnlinkedFiles..... 2
nBackgroudDeletions 0
useNANDECC......... 1
isYaffs2........... 1

Device 1 "Àü&À"
startBlock......... 0
endBlock........... 19
nDataBytesPerChunk. 2048
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 15
nReservedBlocks.... 5
nCheckptResBlocks.. 10
blocksInCheckpoint. 0
nTnodesCreated..... 100
nFreeTnodes........ 46
nObjectsCreated.... 200
nFreeObjects....... 86
nFreeChunks........ 2034
nPageWrites........ 0
nPageReads......... 0
nBlockErasures..... 1
nGCCopies.......... 6
garbageCollections. 1
passiveGCs......... 0
nRetriedWrites..... 0
nShortOpCaches..... 10
nRetireBlocks...... 0
eccFixed........... 0
eccUnfixed......... 0
tagsEccFixed....... 0
tagsEccUnfixed..... 0
cacheHits.......... 0
nDeletedFiles...... 0
nUnlinkedFiles..... 0
nBackgroudDeletions 0
useNANDECC......... 1
isYaffs2........... 1

Device 2 "À¯XÀ ¾(Àè½(À¾(À ¾(Àô½(ÀpŒ
À°Àh¶:À"
startBlock......... 0
endBlock........... 1837
nDataBytesPerChunk. 2048
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 1806
nReservedBlocks.... 5
nCheckptResBlocks.. 10
blocksInCheckpoint. 0
nTnodesCreated..... 400
nFreeTnodes........ 225
nObjectsCreated.... 300
nFreeObjects....... 76
nFreeChunks........ 234418
nPageWrites........ 0
nPageReads......... 0
nBlockErasures..... 0
nGCCopies.......... 0
garbageCollections. 0
passiveGCs......... 0
nRetriedWrites..... 0
nShortOpCaches..... 10
nRetireBlocks...... 0
eccFixed........... 0
eccUnfixed......... 0
tagsEccFixed....... 0
tagsEccUnfixed..... 0
cacheHits.......... 4
nDeletedFiles...... 112
nUnlinkedFiles..... 114
nBackgroudDeletions 0
useNANDECC......... 1
isYaffs2........... 1
/ #

The detailed mount logs with all trace enabled (ech0 all >
/proc/yaffs) is attached in the mail.

/ # mount -t yaffs2 /dev/mtdblock4 /mnt
yaffs: dev is 32505860 name is "mtdblock4"
yaffs: passed flags ""
yaffs_read_super: Using yaffs2
yaffs_read_super: block size 4096
yaffs: Attempting MTD mount on 31.4, "mtdblock4"
erase c014714c
read c014685c
write c0146c48
readoob c0146ae8
writeoob c0146e14
block_isbad c014734c
block_markbad c01473a0
oobblock 2048
oobsize 64
erasesize 262144
size 481820672
yaffs: yaffs_GutsInitialise()
...
...

nandmtd2_ReadChunkWithTagsToNAND chunk 60290 data 00000000 tags c0ae9ccc
packed tags obj -1 chunk -1 byte -1 seq -1
ext.tags eccres 0 blkbad 0 chused 0 obj 0 chunk0 byte 0 del 0 ser 0 seq 0
Allocating from 472 2
nandmtd2_ReadChunkWithTagsToNAND chunk 60289 data 00000000 tags c0ae9ccc
packed tags obj -1 chunk -1 byte -1 seq -1
ext.tags eccres 0 blkbad 0 chused 0 obj 0 chunk0 byte 0 del 0 ser 0 seq 0
Allocating from 472 1
nandmtd2_ReadChunkWithTagsToNAND chunk 60288 data 00000000 tags c0ae9ccc
packed tags obj 117900047 chunk 117698535 byte 117902083 seq 117905375
ext.tags eccres 3 blkbad 0 chused 1 obj 117900047 chunk117698535 byte
117902083 del 0 ser 0 seq 117905375
yaffs: Tnodes added
yaffs: yaffs_GutsInitialise() aborted.


yaffs_read_super: guts initialised FAILED
mount: Mounting /dev/mtdblock4 on /pvr failed: Invalid argument
/ #


According to the logs It seems the issue due to uncleaned shutdown and
check-pointing. All suggestions are Welcome.


Thanks,
Raj Kumar Yadav