JFFS2 & NAND
Thomas Gleixner
gleixner at autronix.de
Thu Feb 14 12:43:35 EST 2002
On Thursday, 14. February 2002 18:27, David Woodhouse wrote:
> gleixner at autronix.de said:
> I'm sorry I haven't been particularly responsive for the last few days.
> It's not that I'm not interested, more that the last few days included 24
> hours in a tin can coming back from linux.conf.au and I don't think I'm
> awake enough yet to attempt it :)
Ok no problem, i was a little bit irritated, that a lot of other issues were
answered and did not know, why the discussion was broken. So this was only a
well meant wakeup call.
I Include my latest statement on this, to have this new thread up to date.
Actual state of JFFS2 on NAND
I implemented a new structure into nand_chip structure, which describes the
usage of the oob area. You can read and modify this structure from the
filesystem driver via two functions, which i have implemented into the mtd
structure. (get_oobcfg, set_oobcfg).
The mtd_oob_config structure is:
/* configuration for out of band data (NAND,DOC...) */
struct mtd_oob_config {
int oob_size; /* size of out of band area */
int ecc_pos[6]; /* position of ECC bytes inside oob */
int badblock_pos; /* position of bad block flag inside oob -1
= inactive */
int eccvalid_pos; /* position of ECC valid flag inside oob -1
= inactive */
int fsdata_pos; /* position to store filesystem specific
information */
int fsdata_len; /* length available for filesystem specific
data */
};
With this structure we can decide at mount time, which scheme we use. Either
the fs driver modifies it to match it's requirements or the fs driver uses
the information given by the device driver. At the moment i use the
information given by the device driver.
I have now fixed the most NAND related FIXME's inside JFFS2, except the
problem with wbuf_flush fail. The cleanmarker in the oob area and the bad
block marking is working pretty good. I modified the scan routine to collect
bad block information. I have a old SmartMediaCard, which has bad blocks on
it. The information is collected correct. Then I erased one of the bad blocks
and destroyed the bad block flag. When gc erased this block again it was
detected as bad (not totaly erased) and marked bad again.
I ran some stress tests on the filesystem and encountered no serious problem,
except when i used a wornout old SMCard from a digicam i ran into the
flush_wbuf bug.
Thomas
__________________________________________________
Thomas Gleixner, autronix automation GmbH
auf dem berg 3, d-88690 uhldingen-muehlhofen
fon: +49 7556 919891 , fax: +49 7556 919886
mail: gleixner at autronix.de, http://www.autronix.de
More information about the linux-mtd
mailing list