RE: Thin device provisioning

Knight, Frederick
2008-08-12T20:38:52Z

Yes, we have hosts that want to use the list form.

I don't see how it doesn't match T13 TRIM command? Both can do single
ranges. In both cases, you can have 1 LBA and 1 length. There is
nothing requiring > 1 range to be sent via the SCSI proposal. In both
cases, you pass the same values to the H/W driver. In one H/W driver it
will load a bunch of values (including the LBA/length) into a set of
registers (PATA) of a memory structure (SATA). In the other H/W driver,
it will load a bunch of values into memory structures (CDB/buffer), and
then tweek the H/W to send the memory structures.

Most SCSI drivers I've seen that have tagged queuing enabled turn off
their elevator algorithms (since the drive itself is doing it's own
optimizations)

There is no difference at the filesystem de-allocator level. The only
difference is how the H/W sends the values to the other end of the wire,
and there will always be differences at that layer.

Fred Knight

-----Original Message-----
From: David Woodhouse [mailto:dwmw2@infradead.org]
Sent: Tuesday, August 12, 2008 2:56 PM
To: Knight, Frederick
Cc: Matthew Wilcox; ricwheeler@gmail.com; linux-fsdevel@vger.kernel.org;
Christoph Hellwig
Subject: RE: Thin device provisioning

On Sat, 2008-08-09 at 13:12 -0400, Knight, Frederick wrote:
> You are free to create a single pair API between your filesystems and
> drivers and send SCSI commands one LBA/length pair at a time.
> However, I'm afraid the voting members of T10 (representing a number
> of other operating systems and their multitude of filesystems)
> preferred the list approach.

That seems like unneeded complexity to me. Admittedly the sample set of
file systems I've converted to use this is small so far -- only 2 -- but
it seems to me that it's always likely to be done in the 'free extent'
code path as we mark blocks free, and I can't see the file system really
taking advantage of the ability to pack multiple regions into the same
request.

It's hard for I/O elevators to merge these requests when they're not
contiguous, too -- it would require a lot of special-casing to make it
happen at that level.

It's also somewhat suboptimal that it doesn't match the T13 'TRIM'
proposal, which allows only a single range to be specified. That'll be
fun for anyone doing SCSI<->ATA conversion...

Has anyone actually claimed that they can and will use the list form,
and have they also told the T13 forum the same thing?

--
David Woodhouse Open Source Technology Centre
David.Woodhouse@intel.com Intel Corporation