Re: Compact Flash Question

From: Tomasz Chmielewski
Date: Wed May 07 2008 - 03:54:59 EST


Bart Van Assche schrieb:
On Wed, May 7, 2008 at 9:12 AM, Tomasz Chmielewski <mangoo@xxxxxxxx> wrote:
As Compact Flash and its wear levelling does not know about free space on
the filesystem, the wear levelling's effectiveness can be only limited -
writes won't spread on the whole free area of the flash.

Does anyone know how wear levelling is done in these devices? Perhaps it
will differ from a manufacturer to manufacturer, but I guess they have a
free area we normally use to store data, and some reserved area used just
for wear levelling and bad block handling, but that's just my guess.

The wear leveling algorithm depends on the CompactFlash manufacturer.
Most manufacturers define a certain number of areas on a CompactFlash.
Each area consists of two or more sectors which are counted in the
total size of the CompactFlash, and one or more spare sectors. Wear
leveling is carried out within an area by spreading writes over the
sectors in an area. The controller in the CompactFlash stores the data
about which sectors are used for storing which data persistently. I
know of only one manufacturer who makes the CompactFlash controllers
carry out wear leveling over the whole CompactFlash.

How does it work, then?
How can it do wear levelling over the whole CF if some (or most) area of CF is already used by our precious data/metadata?
It would have to know the areas where no data is stored, but it contradicts the CF <-> filesystem separation.


--
Tomasz Chmielewski
http://wpkg.org
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/