Mercurial > yaffs-ecoscentric
diff packages/fs/yaffs/current/src/ecos-yaffs-nand.c @ 311:16de60f90faa
ecos-yaffs-nand.c: Correctly use ECC on YAFFS tags in yaffs2
| author | wry |
|---|---|
| date | Fri, 18 Sep 2009 11:13:00 +0000 |
| parents | 9c8ff034abb0 |
| children | 8e1210f7946a |
line wrap: on
line diff
--- a/packages/fs/yaffs/current/src/ecos-yaffs-nand.c +++ b/packages/fs/yaffs/current/src/ecos-yaffs-nand.c @@ -73,9 +73,6 @@ int eyaffs_eraseBlockInNAND (struct yaff return rv==0 ? YAFFS_OK : YAFFS_FAIL; } -// If writing a yaffs_PackedTags1, we store only its eight meaningful bytes -#define PACKEDTAGS1_OOBSIZE 8 - int eyaffs_writeChunkWithTagsToNAND (struct yaffs_DeviceStruct * dev, int chunkInNAND, const __u8 * data, const yaffs_ExtendedTags * tags) @@ -120,9 +117,9 @@ int eyaffs_writeChunkWithTagsToNAND (str yaffs_PackTags2TagsPart(pt2tp, tags); rv = cyg_nand_write_page(part, chunkInNAND, data, dev->totalBytesPerChunk, 0, 0); } else { - yaffs_PackedTags2TagsPart pt; - yaffs_PackTags2TagsPart(&pt, tags); - rv = cyg_nand_write_page(part, chunkInNAND, data, dev->nDataBytesPerChunk, &pt, sizeof(yaffs_PackedTags2TagsPart)); + yaffs_PackedTags2 pt; + yaffs_PackTags2(&pt, tags); + rv = cyg_nand_write_page(part, chunkInNAND, data, dev->nDataBytesPerChunk, &pt, PACKEDTAGS2_OOBSIZE); } #endif } @@ -204,10 +201,10 @@ int eyaffs_readChunkWithTagsFromNAND (st yaffs_UnpackTags2TagsPart(tags, pt2tp); } } else { - yaffs_PackedTags2TagsPart pt; - rv = cyg_nand_read_page(part, chunkInNAND, data, data ? dev->nDataBytesPerChunk : 0, &pt, sizeof(yaffs_PackedTags2TagsPart)); + yaffs_PackedTags2 pt; + rv = cyg_nand_read_page(part, chunkInNAND, data, data ? dev->nDataBytesPerChunk : 0, &pt, tags ? PACKEDTAGS2_OOBSIZE : 0); if (tags) - yaffs_UnpackTags2TagsPart(tags, &pt); + yaffs_UnpackTags2(tags, &pt); } #endif }
