From: Estelle HAMMACHE <estelle.hammache@st.com>
To: Martin Egholm Nielsen <martin@egholm-nielsen.dk>
Cc: linux-mtd@lists.infradead.org
Subject: Re: Writing frequently to NAND - wearing, caching?
Date: Mon, 07 Feb 2005 13:02:57 +0100 [thread overview]
Message-ID: <420758F1.8CAC90A2@st.com> (raw)
In-Reply-To: cu7934$irr$1@sea.gmane.org
Hi Martin,
regarding JFFS2/NAND, the filesystem does not cache
write operations, however there is a NAND page cache.
This means that if you write 100 bytes at a time,
you will not use a full NAND page each time, but you will
probably create two JFFS2 data nodes in the same
NAND flash page. (NB a node may overlap a page boundary,
the page buffer is flushed to the device when
it is full).
Now if you do fsync between each write operation,
the page buffer will be flushed immediately. So in
this case you do use a full page (256 bytes or 2KB)
for each write.
The main drawback of JFFS2 in both cases is that
you end up with many small nodes on the flash
and this slows down initialization and access to this
file (see thread "jffs2_get_inode_nodes() very very slow"
in the February archive at
http://lists.infradead.org/mailman/listinfo/linux-mtd/).
If you were to write 1 byte at a time this problem would
be even more acute.
There is no "journal" per se in JFFS2, the whole
filesystem is log-based.
The case with fsync will wear up the flash somewhat faster
but in any case JFFS2 contains integrated wear levelling
which will distribute the wear on all the blocks in the
partition, so no single block should be worn so much
that it fails (ideally. In real life some NAND blocks
may fail at any time even with perfect wear levelling.
However JFFS2 is able to cope with this case, and the
failed write operation will be retried on another block).
Have you read the JFFS/JFFS2 paper at
http://sources.redhat.com/jffs2/jffs2.pdf ?
(it is slightly out of date but the basic principles
of journaling, wear leveling, data nodes etc have not
changed).
bye
Estelle
Martin Egholm Nielsen wrote:
>
> Hi,
>
> >>I have an application which may need to write states frequently to my
> >>nand-fs in order to have these states in case of powerdown.
> >>But I'm a bit concerned about wearing the nand if I write to frequently.
>
> >>So, if I only need to write, say, 100 bytes every second, how often will
> >>this actually be flushed to the nand?
> >>Is there a maximum commit/flush frequency built in the driver? Or can
> >>this be configured?
>
> > It depends on what fs you're using.
> > With YAFFS, and I believe JFFS2 too, there is no reason to worry about flash
> > "wearing out". I have done accelerated lifetime tests on NAND using YAFFS
> > and in one test wrote 130GB to NAND without any data loss, bad blocks
> > happening etc.
> Now, that's a lot :-)
> I'm using JFFS2 - so hopefully you're right...
>
> > The NAND writes whenever the file system tells it to, so again your question
> > is FS dependent, but all file systems that are NAND-friendly should handle
> > the load you mention with no problems.
> And that is JFFS2 - but since it's a journaling fs it must commit the
> journal, as well, every now and then...
>
> // Martin
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2005-02-07 12:03 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-03 9:31 Writing frequently to NAND - wearing, caching? Martin Egholm Nielsen
2005-02-06 22:14 ` Charles Manning
2005-02-07 8:33 ` Martin Egholm Nielsen
2005-02-07 12:02 ` Estelle HAMMACHE [this message]
2005-02-08 0:12 ` Charles Manning
2005-02-09 6:16 ` Aras Vaichas
2005-02-14 8:37 ` Martin Egholm Nielsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=420758F1.8CAC90A2@st.com \
--to=estelle.hammache@st.com \
--cc=linux-mtd@lists.infradead.org \
--cc=martin@egholm-nielsen.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox