Are you getting the errors when scanning empty chunks/pages? If so, these can be safely ignored. The "ECC turned off" does not apply to the tags ECC calculation, only to the data ECC calculation. -- Charles On Wednesday 13 October 2004 03:48, Daniel Gustafsson wrote: > Can somebody please explain the functions below. I am using yaffs/direct, > ECC turned off. > > When scanning the emfile during a mount there are ecc errors. > > > > void yaffs_CalcTagsECC(yaffs_Tags *tags) > { > // Calculate an ecc > > unsigned char *b = ((yaffs_TagsUnion *)tags)->asBytes; > unsigned i,j; > unsigned ecc = 0; > unsigned bit = 0; > tags->ecc = 0; > > for(i = 0; i < 8; i++) > { > for(j = 1; j &0xff; j<<=1) > { > bit++; > if(b[i] & j) > { > ecc ^= bit; > } > } > } > > tags->ecc = ecc; %%%I always > get a high value on ecc approx 64 > > > } > > int yaffs_CheckECCOnTags(yaffs_Tags *tags) > { > unsigned ecc = tags->ecc; > > yaffs_CalcTagsECC(tags); > > ecc ^= tags->ecc; %% Now my > ecc increases to approx 4096. > > if(ecc && ecc <= 64) > { > // TODO: Handle the failure better. Retire? > unsigned char *b = ((yaffs_TagsUnion *)tags)->asBytes; > > ecc--; > > b[ecc / 8] ^= (1 << (ecc & 7)); > > // Now recvalc the ecc > yaffs_CalcTagsECC(tags); > > return 1; // recovered error > } > else if(ecc) > { > // Wierd ecc failure value > %%%% I always end up here. > // TODO Need to do somethiong here > return -1; //unrecovered error > } > > return 0; > } > > > > //Daniel > > > _______________________________________________ > yaffs mailing list > yaffs@stoneboat.aleph1.co.uk > http://stoneboat.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs