Hello, all!
I use NAND flash with yaffs and jffs2 in turn. I discovered the
following (possibly buggy) behavior. After the following sequence:
/* format for yaffs */
mkyaffs -e /dev/mtdX
/* change mind - format for jffs2 */
eraseall -j /dev/mtdX
/* mount. Important! Without -t option! If use mount -t jffs2 everything
* works!
*/
# mount /dev/mtdblock0 /mnt
end_request: I/O error, dev 1f:00 (mtdblock), sector 0
/dev/mtdblock0: Input/output error
#
But in fact mount completed successfully! I have ext2 compiled in the
kernel and the error arises exactly when kernel tries to mount ext2
first.
It seems this occurred because during mkyaffs -e /dev/mtdX there is the
call
ioctl (fd, MEMSETOOBSEL, &oobsel).
In fact, mkyaffs installs its oobsel info (pay attention that -e enforce
ecc) into _driver_ _structure_ mtd corresponding to the device and never
uninstall it. Then this cause bug when during mount without -t option
kernel tries to read mtd device by read call. This cause call to
nand_read, i.e. to nand_read_ecc (mtd, from, len, retlen, buf, NULL,
NULL), where the last parameter is exactly oobsel info! But since yaffs
installed its oobsel info into mtd->oobinfo it gets used in
nand_read_ecc:
// use chip default if zero
if (oobsel == NULL)
oobsel = &mtd->oobinfo;
Seems this causes buggy behavior. Any suggestions are welcome! Exactly
it is interesting where is the correct place to uninstall the yaffs
oobsel info from the mtd driver.
Regards,
Eugeny
---------------------------------------------------------------------------------------
This mailing list is hosted by Toby Churchill open software (
www.toby-churchill.org).
If mailing list membership is no longer wanted you can remove yourself from the list by
sending an email to
yaffs-request@toby-churchill.org with the text "unsubscribe"
(without the quotes) as the subject.