projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
yaffs: Skip checkpoint writing if mounted readonly
[yaffs2.git]
/
yaffs_mtdif2.c
diff --git
a/yaffs_mtdif2.c
b/yaffs_mtdif2.c
index 2b5884715a0f9e6a218fd5a7ebc5a901d5e26d86..2b0a601fb0c828d83e7ce1fe52c9a210efb0e607 100644
(file)
--- a/
yaffs_mtdif2.c
+++ b/
yaffs_mtdif2.c
@@
-34,7
+34,7
@@
int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device *dev, int chunkInNAND,
const __u8 *data,
const yaffs_ExtendedTags *tags)
{
const __u8 *data,
const yaffs_ExtendedTags *tags)
{
- struct mtd_info *mtd = yaffs_DeviceTo
Context(dev)->mtd
;
+ struct mtd_info *mtd = yaffs_DeviceTo
Mtd(dev)
;
#if (MTD_VERSION_CODE > MTD_VERSION(2, 6, 17))
struct mtd_oob_ops ops;
#else
#if (MTD_VERSION_CODE > MTD_VERSION(2, 6, 17))
struct mtd_oob_ops ops;
#else
@@
-100,7
+100,7
@@
int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device *dev, int chunkInNAND,
int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device *dev, int chunkInNAND,
__u8 *data, yaffs_ExtendedTags *tags)
{
int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device *dev, int chunkInNAND,
__u8 *data, yaffs_ExtendedTags *tags)
{
- struct mtd_info *mtd = yaffs_DeviceTo
Context(dev)->mtd
;
+ struct mtd_info *mtd = yaffs_DeviceTo
Mtd(dev)
;
#if (MTD_VERSION_CODE > MTD_VERSION(2, 6, 17))
struct mtd_oob_ops ops;
#endif
#if (MTD_VERSION_CODE > MTD_VERSION(2, 6, 17))
struct mtd_oob_ops ops;
#endif
@@
-141,7
+141,7
@@
int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device *dev, int chunkInNAND,
ops.len = data ? dev->nDataBytesPerChunk : packed_tags_size;
ops.ooboffs = 0;
ops.datbuf = data;
ops.len = data ? dev->nDataBytesPerChunk : packed_tags_size;
ops.ooboffs = 0;
ops.datbuf = data;
- ops.oobbuf = yaffs_DeviceTo
Context
(dev)->spareBuffer;
+ ops.oobbuf = yaffs_DeviceTo
LC
(dev)->spareBuffer;
retval = mtd->read_oob(mtd, addr, &ops);
}
#else
retval = mtd->read_oob(mtd, addr, &ops);
}
#else
@@
-171,7
+171,7
@@
int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device *dev, int chunkInNAND,
}
} else {
if (tags) {
}
} else {
if (tags) {
- memcpy(packed_tags_ptr, yaffs_DeviceTo
Context
(dev)->spareBuffer, packed_tags_size);
+ memcpy(packed_tags_ptr, yaffs_DeviceTo
LC
(dev)->spareBuffer, packed_tags_size);
yaffs_UnpackTags2(tags, &pt, !dev->param.noTagsECC);
}
}
yaffs_UnpackTags2(tags, &pt, !dev->param.noTagsECC);
}
}
@@
-179,8
+179,14
@@
int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device *dev, int chunkInNAND,
if (localData)
yaffs_ReleaseTempBuffer(dev, data, __LINE__);
if (localData)
yaffs_ReleaseTempBuffer(dev, data, __LINE__);
- if (tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR)
+ if (tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR)
{
tags->eccResult = YAFFS_ECC_RESULT_UNFIXED;
tags->eccResult = YAFFS_ECC_RESULT_UNFIXED;
+ dev->eccUnfixed++;
+ }
+ if(tags && retval == -EUCLEAN && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR) {
+ tags->eccResult = YAFFS_ECC_RESULT_FIXED;
+ dev->eccFixed++;
+ }
if (retval == 0)
return YAFFS_OK;
else
if (retval == 0)
return YAFFS_OK;
else
@@
-189,7
+195,7
@@
int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device *dev, int chunkInNAND,
int nandmtd2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
{
int nandmtd2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
{
- struct mtd_info *mtd = yaffs_DeviceTo
Context(dev)->mtd
;
+ struct mtd_info *mtd = yaffs_DeviceTo
Mtd(dev)
;
int retval;
T(YAFFS_TRACE_MTD,
(TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), blockNo));
int retval;
T(YAFFS_TRACE_MTD,
(TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), blockNo));
@@
-209,7
+215,7
@@
int nandmtd2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
int nandmtd2_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo,
yaffs_BlockState *state, __u32 *sequenceNumber)
{
int nandmtd2_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo,
yaffs_BlockState *state, __u32 *sequenceNumber)
{
- struct mtd_info *mtd = yaffs_DeviceTo
Context(dev)->mtd
;
+ struct mtd_info *mtd = yaffs_DeviceTo
Mtd(dev)
;
int retval;
T(YAFFS_TRACE_MTD,
int retval;
T(YAFFS_TRACE_MTD,