[Yaffs-archive] mkyaffs -e buggy behavior

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Eugeny Mints
Date:  
To: yaffs
Subject: [Yaffs-archive] mkyaffs -e buggy behavior
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 with the text "unsubscribe"
(without the quotes) as the subject.