hello... sir
 
why occur "Partially written block %d detected" ?
 
 
thank you...
 
I wish ..... as soon as .... let 's send e-mail to me.
 
 
 
1. yaffs filesystem version Info
const char *yaffs_guts_c_version =
    "$Id: yaffs_guts.c,v 1.95 2009/11/11 01:40:41 charles Exp $";
 
 
2. occur point...
 
static int yaffs_ScanBackwards(yaffs_Device *dev) in yaffs_guts.c
 
 
 
if (foundChunksInBlock) {
     /* This is a chunk that was skipped due to failing the erased check */
    } else if (c == 0) {
     /* We're looking at the first chunk in the block so the block is unused */
     state = YAFFS_BLOCK_STATE_EMPTY;
     dev->nErasedBlocks++;
    } else {
     if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
         state == YAFFS_BLOCK_STATE_ALLOCATING) {
      if (dev->sequenceNumber == bi->sequenceNumber) {
       /* this is the block being allocated from */
 
       T(YAFFS_TRACE_SCAN,
         (TSTR
          (" Allocating from %d %d"
           TENDSTR), blk, c));
 
       state = YAFFS_BLOCK_STATE_ALLOCATING;
       dev->allocationBlock = blk;
       dev->allocationPage = c;
       dev->allocationBlockFinder = blk;
      } else {
       /* This is a partially written block that is not
        * the current allocation block. This block must have
        * had a write failure, so set up for retirement.
        */
 
        /* bi->needsRetiring = 1; ??? TODO */
        bi->gcPrioritise = 1;
 
        T(YAFFS_TRACE_ALWAYS,
        (TSTR("Partially written block %d detected" TENDSTR),                    <<--------- why occur ?
        blk));
      }
     }
    }
 
3. you will know the reason that "Partially written block xx detected".
    what do occur the reason? and what is slove method?