X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fyaffs_fileem2k.c;h=9ef488e3918ff4eee3b1dc34c3f85a9165f3ac6d;hp=a4baaa3c7e7825ab8436fb4b8277898436a7a19c;hb=5a7a15b0b01076e7f96a354e2999f8dcf2e6d28b;hpb=c4be92d4a7d255f147c5130c12207464a993f8eb diff --git a/direct/yaffs_fileem2k.c b/direct/yaffs_fileem2k.c index a4baaa3..9ef488e 100644 --- a/direct/yaffs_fileem2k.c +++ b/direct/yaffs_fileem2k.c @@ -16,7 +16,7 @@ * This is only intended as test code to test persistence etc. */ -const char *yaffs_flashif2_c_version = "$Id: yaffs_fileem2k.c,v 1.17 2009-01-16 00:46:59 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" @@ -72,7 +72,7 @@ static int nops_so_far; int ops_multiplier; -static void yflash2_MaybePowerFail(void) +static void yflash2_MaybePowerFail(unsigned int chunkInNAND, int failPoint) { nops_so_far++; @@ -82,6 +82,8 @@ static void yflash2_MaybePowerFail(void) 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); } } @@ -143,7 +145,7 @@ static int CheckInit(void) srand(random_seed); - remaining_ops = (rand() % 1000) * 2; + remaining_ops = (rand() % 1000) * 5; memset(dummyBuffer,0xff,sizeof(dummyBuffer)); @@ -240,7 +242,7 @@ int yflash2_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u if(written != dev->nDataBytesPerChunk) return YAFFS_FAIL; } - yflash2_MaybePowerFail(); + // yflash2_MaybePowerFail(chunkInNAND,1); if(tags) { @@ -258,7 +260,7 @@ int yflash2_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u else { yaffs_PackedTags2 pt; - yaffs_PackTags2(&pt,tags); + yaffs_PackTags2(dev,&pt,tags); __u8 * ptab = (__u8 *)&pt; nRead = read(h,localBuffer,sizeof(pt)); @@ -291,7 +293,7 @@ int yflash2_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u } } - //yflash2_MaybePowerFail(); + //yflash2_MaybePowerFail(chunkInNAND,2); /* Next do the whole write */ if(data) @@ -336,7 +338,7 @@ int yflash2_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u else { yaffs_PackedTags2 pt; - yaffs_PackTags2(&pt,tags); + yaffs_PackTags2(dev,&pt,tags); __u8 * ptab = (__u8 *)&pt; nRead = read(h,localBuffer,sizeof(pt)); @@ -361,7 +363,7 @@ int yflash2_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u } } - yflash2_MaybePowerFail(); + yflash2_MaybePowerFail(chunkInNAND,3); } return YAFFS_OK; @@ -471,7 +473,7 @@ int yflash2_ReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunkInNAND, __u8 *d { 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){