title="Discard for RAIDframe"
Implement the block-discard operation (also known as "trim") for RAIDframe.
Higher-level code may call discard to indicate to the storage system
that certain blocks no longer contain useful data.
The contents of these blocks do not need to be preserved until they
are later written again.
This means, for example, that they need not be restored during a
RAIDframe should also be made to call discard on the disk devices
underlying it, so those devices can take similar advantage of the
This is particularly important for SSDs, where discard ("trim") calls
can increase both the performance and write lifetime of the device.
The complicating factor is that a block that has been discarded no
longer has stable contents: it might afterwards read back as zeros, or
it might not, or it might change to reading back zeros (or trash) at
any arbitrary future point until written again.
The first step of this project is to figure out a suitable model for
the operation of discard in RAIDframe.
Does it make sense to discard single blocks, or matching blocks across
stripes, or only whole stripe groups, or what?
What metadata should be stored to keep track of what's going on, and
where does it go?
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb