* This is only intended as test code to test persistence etc.
*/
-const char *yaffs_flashif2_c_version = "$Id: yaffs_fileem2k.c,v 1.18 2009-01-16 02:26:56 charles Exp $";
+const char *yaffs_flashif2_c_version = "$Id: yaffs_fileem2k.c,v 1.21 2009-11-07 22:35:15 charles Exp $";
#include "yportenv.h"
int ops_multiplier;
-static void yflash2_MaybePowerFail(void)
+static void yflash2_MaybePowerFail(unsigned int chunkInNAND, int failPoint)
{
nops_so_far++;
if(simulate_power_failure &&
remaining_ops < 1){
printf("Simulated power failure after %d operations\n",nops_so_far);
+ printf(" power failed on chunkInNAND %d, at fail point %d\n",
+ chunkInNAND, failPoint);
exit(0);
}
}
if(written != dev->nDataBytesPerChunk) return YAFFS_FAIL;
}
- yflash2_MaybePowerFail();
+ // yflash2_MaybePowerFail(chunkInNAND,1);
if(tags)
{
else
{
yaffs_PackedTags2 pt;
- yaffs_PackTags2(&pt,tags);
+ yaffs_PackTags2(dev,&pt,tags);
__u8 * ptab = (__u8 *)&pt;
nRead = read(h,localBuffer,sizeof(pt));
}
}
- //yflash2_MaybePowerFail();
+ //yflash2_MaybePowerFail(chunkInNAND,2);
/* Next do the whole write */
if(data)
else
{
yaffs_PackedTags2 pt;
- yaffs_PackTags2(&pt,tags);
+ yaffs_PackTags2(dev,&pt,tags);
__u8 * ptab = (__u8 *)&pt;
nRead = read(h,localBuffer,sizeof(pt));
}
}
- yflash2_MaybePowerFail();
+ yflash2_MaybePowerFail(chunkInNAND,3);
}
return YAFFS_OK;
{
yaffs_PackedTags2 pt;
nread= read(h,&pt,sizeof(pt));
- yaffs_UnpackTags2(tags,&pt);
+ yaffs_UnpackTags2(dev,tags,&pt);
#ifdef SIMULATE_FAILURES
if((chunkInNAND >> 6) == 100) {
if(fail300 && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR){