Hi All,
The initial value of erase_ok in function yaffs_write_new_chunk (git
hash: 34292b4, yaffs_guts.c line 497) is 0, which is YAFFS_FAIL, so
any write failure in page other than fist page will be treated as an
unclean erase. I think this is different from the expected logic. This
could be a potential problem because a block is expected to be retired
immediately if WRITE operation fails. Continue using such a block may
lead to content corruption.
Let me confirm my understand of the logic is correct:
if( first page )
if( not erased_ok )
skip block
fi
fi
write page
if( first page )
verify write
fi
if( write failed )
if ( erased_ok ) <== eased_ok is by default false, and will only
be updated in first page
retire block
else
skip block
fi
fi
regards,
Peter