NAND pages cache?

Thomas Gleixner tglx at linutronix.de
Mon Nov 15 04:57:12 EST 2004


On Mon, 2004-11-15 at 12:43 +0300, Artem Bityuckiy wrote:
> Thomas Gleixner wrote:
> > On Mon, 2004-11-15 at 08:49 +0000, David Woodhouse wrote:
> > 
> >>On Mon, 2004-11-15 at 11:49 +0300, Artem Bityuckiy wrote:
> >>
> >>>So, the obvious idea how to avoid this is to introduce something like 
> >>>NAND pages cache. The cache will keep several NAND pages which were last 
> >>>accessed.
> >>>
> >>>I don not know is it good to do this only in JFFS2 or on the MTD NAND layer?
> >>
> >>I thought we already did this in the MTD NAND layer, since we had to
> >>read whole pages there to do ECC anyway. Thomas?
> > 
> > 
> > We do caching only if a page is read partially. If we read a full page
> > we read directly into the fs buffer.
> > 
> > The partial reads happen when we read nodes. The full page reads happen
> > when we read data. That's sufficient and captures most of the double
> > reads on the same page.
> > 
> > tglx
> Hmm, It seems I do not know something about MTD. I thought it *always* 
> reads whole
> pages in orger to always check ECC... I'll see this more close.

The nand driver always reads whole pages due to ECC. But if the fs
driver requests only a part of the page then the page is read into the
cache buffer of the nand driver, ECC is checked and the part which was
requested by the fs driver is copied into the fs buffer. If the next
read requests another part of this page then we read out of the cache
buffer instead of reading the FLASH again.

tglx






More information about the linux-mtd mailing list