On Wed, Aug 12, 2009 at 11:48:27PM +0100, Hugh Dickins wrote:But fundamentally, though I can see how this cutdown communication
path is useful to compcache, I'd much rather deal with it by the more
general discard route if we can. (I'm one of those still puzzled by
the way swap is mixed up with block device in compcache: probably
because I never found time to pay attention when you explained.)
You're right to question the utility of the current swap discard
placement. That code is almost a year old, written from a position
of great ignorance, yet only now do we appear to be on the threshold
of having an SSD which really supports TRIM (ah, the Linux ATA TRIM
support seems to have gone missing now, but perhaps it's been
waiting for a reality to check against too - Willy?).
I am indeed waiting for hardware with TRIM support to appear on my
desk before resubmitting the TRIM code. It'd also be nice to be able to
get some performance numbers.
I won't be surprised if we find that we need to move swap discard
support much closer to swap_free (though I know from trying before
that it's much messier there): in which case, even if we decided to
keep your hotline to compcache (to avoid allocating bios etc.), it
would be better placed alongside.
It turns out there are a lot of tradeoffs involved with discard, and
they're different between TRIM and UNMAP.
Let's start with UNMAP. This SCSI command is used by giant arrays.
They want to do Thin Provisioning, so allocate physical storage to virtual
LUNs on demand, and want to deallocate it when they get an UNMAP command.
They allocate storage in large chunks (hundreds of kilobytes at a time).
They only care about discards that enable them to free an entire chunk.
The vast majority of users *do not care* about these arrays, because
they don't have one, and will never be able to afford one. We should
ignore the desires of these vendors when designing our software.