Hi,
> > You should find the power fail stuff very robust (ie. zero
> > problems). If you
> > don't then please shout ***loud***.
The rename issue was worked around in application code. The second problem
found after 33 power cycles. Symptoms:
1. rename/delete fails:
# mv blockno.tmp0 blockno0
mv: unable to rename `blockno.tmp0': Directory not empty
# rm blockno0
rm: unable to remove `blockno0': Directory not empty
2. The size of the destination file grew from 18 bytes to 512.
# ls -l
-rwxr-xr-x 1 root root 18 Jan 1 00:00 blockno.tmp0
-rwxr-xr-x 1 root root 512 Jan 1 00:00 blockno0
First 18 bytes are ok and the rest is filled with zeros:
# hexdump blockno0
0000000 6c42 636f 206b 203d 3239 3435 3220 3234
0000010 0a36 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
*
0000200
#
3. Filesystem cannot be unmounted:
# mount
.......
/dev/mtdblock3 on /mnt/flash type yaffs (rw)
.......
# umount /mnt/flash/
umount: /mnt/flash: Device or resource busy
4. dmesg reported:
......................
yaffs: dev is 31.3 name is "mtdblock3"
yaffs: Attempting MTD mount on 31.3, "mtdblock3"
block 2636 is bad
block 3664 is bad
nand_read_ecc: Failed ECC read, page 0x0002b1be
**>>ecc error fix performed on chunk 176574:0
**>>ecc error unfixed on chunk 176574:1
**>>Block 5517 marked for retirement
block 7143 is bad
eth0: Link now 100-FullDuplex
nfs warning: mount version older than kernel
**>>ecc error fix performed on chunk 176574:0
**>>ecc error fix performed on chunk 176574:1
**>>Block 5517 marked for retirement
..................................
5. Sometime during testing device developed an extra bad block. I am inclined
to believe that it is not really bad since only a few erases were executed.
6. hexdump from /dev/mtd3 produces a lot of:
nand_read_ecc: Failed ECC read, page NNN
***********************************************************
Additional info:
linux 2.6.10 + March 28th 2005 mtd
..............
SmartMedia card inserted.
NAND device: Manufacturer ID: 0x98, Chip ID: 0x79 (Toshiba NAND 128MiB 3,3V 8-bi
t)
Scanning device for bad blocks
Bad eraseblock 2636 at 0x02930000
Bad eraseblock 3664 at 0x03940000
Bad eraseblock 7143 at 0x06f9c000
Creating 1 MTD partitions on "NAND 128MiB 3,3V 8-bit":
0x00000000-0x08000000 : "Storage"
mtd: Giving out device 3 to Storage
...............
# cat /proc/yaffs
YAFFS built:Apr 20 2005 14:39:45
$Id: yaffs_fs.c,v 1.35 2004/10/20 20:12:43 charles Exp $
$Id: yaffs_guts.c,v 1.37 2004/10/20 20:12:43 charles Exp $
Device yaffs
startBlock......... 1
endBlock........... 8191
chunkGroupBits..... 2
chunkGroupSize..... 4
nErasedBlocks...... 7
nTnodesCreated..... 34100
nFreeTnodes........ 50
nObjectsCreated.... 32800
nFreeObjects....... 83
nFreeChunks........ 177913
nPageWrites........ 27
nPageReads......... 67289
nBlockErasures..... 0
nGCCopies.......... 0
garbageCollections. 0
passiveGCs......... 0
nRetriedWrites..... 0
nRetireBlocks...... 0
eccFixed........... 0
eccUnfixed......... 0
tagsEccFixed....... 0
tagsEccUnfixed..... 9
cacheHits.......... 0
nDeletedFiles...... 32702
nUnlinkedFiles..... 32702
nBackgroudDeletions 0
useNANDECC......... 1
#
Sergei Sharonov