[Yaffs] YAFFS issue with custom NAND driver

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Andre Renaud
Date:  
To: yaffs
Subject: [Yaffs] YAFFS issue with custom NAND driver
Hi,
I'm developing a new MTD/NAND driver under Linux based on highly
customised interface. Unfortunately this means that I cannot re-use the
existing NAND subsystem (although I can reuse the MTD bits).

As a result of this I'm reimplementing read_oob/write_oob etc... from
scratch. They appear to be working in broad terms (I can read/write raw
data acceptably), however I think I've still got some issues relating to
MTD_OOB_AUTO / MTD_OOB_PLACE for oob data placement. As such I don't
seem to be able to use the device with YAFFS.

As soon as I attempt to touch a file on my yaffs partition it goes
haywire, believing that all of the blocks are not erased properly.

Here is some of the output (with full debugging enabled):
yaffs locking c78f9840
yaffs locked c78f9840
yaffs_lookup for 1:foo
yaffs unlocking c78f9840
yaffs_lookup not found
yaffs_create
yaffs_mknod: parent object 1 type 3
yaffs_mknod: making oject for foo, mode 81a4 dev 0
yaffs locking c78f9840
yaffs locked c78f9840
yaffs_mknod: making file
yaffs: Tnodes added
yaffs_MarkSuperBlockDirty() sb = c791ea00
Allocated block 1, seq 4097, 126 left
nandmtd2_ReadChunkWithTagsFromNAND chunk 0 data c79a8000 tags c7955ae0
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
packed tags obj -1 chunk -1 byte -1 seq -1
ext.tags eccres 1 blkbad 0 chused 0 obj 0 chunk0 byte 0 del 0 ser 0 seq 0
Chunk 64 not erased
**>> yaffs chunk 64 was not erased
line 1018 delete of chunk 64
Allocated block 2, seq 4098, 125 left
nandmtd2_ReadChunkWithTagsFromNAND chunk 64 data c79a8000 tags c7955ae0
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
packed tags obj -1 chunk -1 byte -1 seq -1
ext.tags eccres 1 blkbad 0 chused 0 obj 0 chunk0 byte 0 del 0 ser 0 seq 0
Chunk 128 not erased
**>> yaffs chunk 128 was not erased
line 1018 delete of chunk 128
Allocated block 3, seq 4099, 124 left
nandmtd2_ReadChunkWithTagsFromNAND chunk 128 data c79a8000 tags c7955ae0
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
packed tags obj -1 chunk -1 byte -1 seq -1
ext.tags eccres 1 blkbad 0 chused 0 obj 0 chunk0 byte 0 del 0 ser 0 seq 0
Chunk 192 not erased
**>> yaffs chunk 192 was not erased



Here is a copy of /proc/yaffs (from just prior to running the touch
command):

YAFFS built:Jun 14 2010 14:09:20


Device 0 "Stack0"
startBlock......... 0
endBlock........... 127
totalBytesPerChunk. 16384
useNANDECC......... 1
noTagsECC.......... 0
isYaffs2........... 1
inbandTags......... 0
emptyLostAndFound.. 0
disableLazyLoad.... 0
refreshPeriod...... 500
nShortOpCaches..... 10
nReservedBlocks.... 5

nDataBytesPerChunk. 16384
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 127
blocksInCheckpoint. 0

nTnodesCreated..... 0
nFreeTnodes........ 0
nObjectsCreated.... 100
nFreeObjects....... 96
nFreeChunks........ 8128

nPageWrites........ 0
nPageReads......... 0
nBlockErasures..... 0
nGCCopies.......... 0
allGCs............. 0
passiveGCs......... 0
oldestDirtyGCs..... 0
backgroundGCs...... 0
nRetriedWrites..... 0
nRetireBlocks...... 0
eccFixed........... 0
eccUnfixed......... 0
tagsEccFixed....... 0
tagsEccUnfixed..... 0
cacheHits.......... 0
nDeletedFiles...... 0
nUnlinkedFiles..... 0
refreshCount....... 1
nBackgroudDeletions 0

Any hints as to where I could have made a mistake?

Regards,
Andre

--
Bluewater Systems Ltd - ARM Technology Solution Centre

Andre Renaud                5 Amuri Park, 404 Barbadoes St
            PO Box 13 889, Christchurch 8013
http://www.bluewatersys.com    New Zealand
Phone: +64 3 3779127        Freecall: Australia 1800 148 751
Fax:   +64 3 3779135              USA 1800 261 2934