my program infomation:
 
I write 1MB files use below:
 
#define KB 1024
filesize = 1;
static char wbuf[KB];
 
for (i = 0; i < (filesize * KB); i++) {
    if ( write (fd, wbuf, KB) < 0) {
        printf ("Error: cannot write %s\n", test_file);
        return -1;
    }
 }
Yaffs will pop "!! Allocator out !!!! problem"
 
 
Another test: I write 1MB using 2KB, It is OK.
 
 
filesize = 1;
static char wbuf[2048];
 
 for (i = 0; i < (filesize * 512); i++) {
     if ( write (fd, wbuf, 2048) < 0) {
          printf ("Error: cannot write %s\n", test_file);
          return -1;
     }
 }
 
 
/ # cat /proc/yaffs
Device 0 "nand_nda"
startBlock......... 0
endBlock........... 255
totalBytesPerChunk. 2048
nDataBytesPerChunk. 2048
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 247
 
Best Regards.
Ken

 
2009/8/20 Ken Yu <gagayo@gmail.com>
I add more information about dev->nErasedBlocks
 
initial /proc/yaffs:

/ # cat /proc/yaffs
Device 0 "nand_nda"
startBlock......... 0
endBlock........... 255
totalBytesPerChunk. 2048
nDataBytesPerChunk. 2048
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 256
 
after I write one 1MB file by open() and write() function:
 
/ # cat /proc/yaffs
Device 0 "nand_nda"
startBlock......... 0
endBlock........... 255
totalBytesPerChunk. 2048
nDataBytesPerChunk. 2048
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 239

This 1MB file eats 17 blocks ( 17*64*2048 Bytes = 2,228,224 Bytes).
 
It's queer.
 
 
I use "cp" command. nErasedBlocks is correct.
 
/ # cp file_1 /mnt/f0/


/ # cat /proc/yaffs
Device 0 "nand_nda"
startBlock......... 0
endBlock........... 255
totalBytesPerChunk. 2048
nDataBytesPerChunk. 2048
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 247

 
Best Regards.
Ken
 
On 2009-08-20 02:41, Ken Yu wrote:
> Hi, all:
>
> My OS is linux 2.6.12 and I check out yaffs from cvs yesterday.
>
> I cut a mtd partition that is 32MB.
>
> /