Thread (18 messages) 18 messages, 8 authors, 2009-03-23

Re: TRIM vs UNMAP vs WRITE SAME and thin devices

From: James Bottomley <James.Bottomley@HansenPartnership.com>
Date: 2009-02-07 15:09:32
Also in: linux-fsdevel, linux-scsi

On Sat, 2009-02-07 at 09:53 -0500, Ric Wheeler wrote:
I have been poked at by some vendors about the status of our support for 
the virtually/thinly provisioned luns since they are getting close to 
being able to test with real devices.
With my LSF hat on, a certain array vendor might be sponsoring to get
the opportunity to raise this issue more fully.  The impression (mostly
correct) is that we're thinking about trim/unmap purely from the SSD FTL
point of view and perhaps not being as useful as we might to virtually
provisioned LUNs ... so you could mention to the other vendors that they
might have an interest in coming (and even possibly sponsoring).
My quick summary is that we most of the work so far has been done 
without any real hardware to play with - in 2.6.29-rc3, I don't see any 
low level ATA or SCSI bits that turn requests tagged with REQ_DISCARD 
into the specific ATA or SCSI commands. Did I miss something & if not, 
do we have plans to push anything upstream soonish?
With no devices it's a bit hard.  Also we need at least three pieces for
SSDs: Devices supporting trim, the T13 implementation of TRIM and the
SAT for UNMAP.  We can get the latter two out of the proposals, but it's
still a bit of a moving target.
One note on the SCSI devices, there was a T10 proposal to add an "UNMAP" 
bit to the "WRITE SAME" command for SCSI. The details of the proposed 
interface are at:

http://www.t11.org/t10/document.08/08-356r4.pdf

The up side of using WRITE SAME with unmap is that there are no fuzzy 
semantics about what the unmapped sectors will be - they will all be 
whatever the WRITE SAME command would have set (usually zeroes I assume).

The summary of write same is that you send down one sector (say 512 
bytes of zeroes) and a count so you can do a zeroing of the target 
without having to send all of the data over the wire. Very useful for 
initializing members of a RAID device for example to a known pattern.

The down side would be that if we incorrectly send down a WRITE SAME 
command to a non-thin device, I think that we would kick off a potential 
extremely long IO. For example, imagine doing a write same of a full TB 
- that could take an hour which might be an issue :-)  Of course, we 
should not be doing that if we get the code right.
As I read it, non thin provisioned devices can be identified (and may
not even accept WRITE SAME).
I don't see another of the PDF's claims of advantages for file systems 
to be really all that useful.

With either the write same and its proposed unmap bit or with the 
original T10 unmap, do we have a short list of infrastructure that needs 
fleshed out? Anything we can do to help get peoples patches to test with 
their non-GA thin enabled devices?
Yes, REQ_DISCARD simply isn't broad enough to cope with all the
potential uses of WRITE SAME.  If it's just a mechanism to get known
data into a discard sector, fine, we can set that at the lower level.
However, WRITE SAME has uses beyond TRIM in that it can be used as an
engine for data deduplication.  If vendors are thinking of doing this,
then REQ_DISCARD isn't flexible enough.
Is there a similar short list of things to be done for T13 devices with 
TRIM? Anyone have a chance to test on real hardware yet?
Not that I know of yet.  It's all sort of on hold until actual devices
become available.

James

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help