logo       

Wide tnode support added: msg#00012

linux.file-systems.yaffs

Subject: Wide tnode support added

Hi YAFFSers

I have checked in changes for wide tnode support. This speeds up reads on
large NAND arrays, as per the patch that Andre submitted some while back, but
uses a variable size bitmap instead which is far more frugal in its memory
usage.

To explain...

The standard size level0 tnodes are 16-bits wide. That allows you to uniquely
identify up to 64k "chunks". For 512-byte page devices that maxes out at 32MB
(64k * 512). To handle larger devices YAFFS uses the concept of chunk groups.
For example, on 128MB devices that means we can use the level0 tnode to
identify a group of 4 chunks and then search for the chunk we want. This
searching gets slower for larger devices as the chunk group size increases.

The Bluewater guys did a hack where they used 32-but tnodes. Far bigger than
needed, but no more searching required.

The changes just checked in use a variable size bitmap instead. At
initialisation, the tnode width is calculated (minimum 16 bits) and
allocations and bitshuffling are matched to that size. This means we get a
lot of performance improvement for large arrays with a slight increase in
memory usage.

See how it goes...

-- Charles


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise