when I use yaffs2 with inband-tags, the file always miss some part which
filled with 0s.
It prints 'yaffs: Chunk -1 not found zero instead' when ytrace is 0x800.
I found out mtd_block_markbad & mtd_block_isbad parameter is wrong.
In file fs\yaffs2\yaffs_guts.c, line 4658 to 4664?
/* Sort out space for inband tags, if required */
if (dev->param.inband_tags)
dev->data_bytes_per_chunk =
dev->param.total_bytes_per_chunk -
sizeof(struct yaffs_packed_tags2_tags_only);
else
dev->data_bytes_per_chunk =
dev->param.total_bytes_per_chunk;
In inband_tags mode, data_bytes_per_chunk is not page aligned,
so in file fs\yaffs2\yaffs_mtdif2.c, line 182 to 184 and line 201 to 203,
mtd_block_markbad(mtd,
blockNo * dev->param.chunks_per_block *
dev->data_bytes_per_chunk);
mtd_block_isbad(mtd,
blockNo * dev->param.chunks_per_block *
dev->data_bytes_per_chunk);
the 2nd para is not correct but small.
My patch followed,
diff -uN a/fs/yaffs2/yaffs_mtdif2.c b/fs/yaffs2/yaffs_mtdif2.c
--- a/fs/yaffs2/yaffs_mtdif2.c
+++ b/fs/yaffs2/yaffs_mtdif2.c
@@ -181,7 +181,7 @@
retval =
mtd_block_markbad(mtd,
blockNo * dev->param.chunks_per_block *
- dev->data_bytes_per_chunk);
+ dev->param.total_bytes_per_chunk);
if (retval == 0)
return YAFFS_OK;
@@ -200,7 +200,7 @@
retval =
mtd_block_isbad(mtd,
blockNo * dev->param.chunks_per_block *
- dev->data_bytes_per_chunk);
+ dev->param.total_bytes_per_chunk);
if (retval) {
yaffs_trace(YAFFS_TRACE_MTD, "block is bad");
--------------------------------------------------------
ZTE Information Security Notice: The information contained in this mail (and
any attachment transmitted herewith) is privileged and confidential and is
intended for the exclusive use of the addressee(s). If you are not an intended
recipient, any disclosure, reproduction, distribution or other dissemination or
use of the information contained is strictly prohibited. If you have received
this mail in error, please delete it and notify us immediately.
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot