Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Dec 2015 12:03:11 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        Steven Hartland <killing@multiplay.co.uk>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: DELETE support in the VOP_STRATEGY(9)?
Message-ID:  <0DB97CBA-4DC3-4D52-AE9D-54546292D66F@bsdimp.com>
In-Reply-To: <566726ED.2010709@multiplay.co.uk>
References:  <CAH7qZftSVAYPmxNCQy=VVRj79AW7z9ade-0iogv2COfo2x%2Ba2Q@mail.gmail.com> <201512052002.tB5K2ZEA026540@chez.mckusick.com> <CAH7qZfs6ksE%2BQTMFFLYxY0PNE4hzn=D5skzQ91=gGK2xvndkfw@mail.gmail.com> <86poyhqsdh.fsf@desk.des.no> <CAH7qZftVj9m_yob=AbAQA7fh8yG-VLgM7H0skW3eX_S%2Bv75E-g@mail.gmail.com> <86fuzdqjwn.fsf@desk.des.no> <CANCZdfo=NfKy51%2B64-F_v%2BDh2wkrFYP4gXe=X9RWSSao49gO9g@mail.gmail.com> <CANCZdfqHoduhdCss0b6=UsBPAxfRZv4hF8vyuUVLBdP5gYUduQ@mail.gmail.com> <864mfssxgt.fsf@desk.des.no> <CANCZdfoXdcD%2B9jeVR1Np16gafBf0_4B2wombwxze8DvJwf7cMg@mail.gmail.com> <86wpsord9l.fsf@desk.des.no> <566726ED.2010709@multiplay.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]

> On Dec 8, 2015, at 11:52 AM, Steven Hartland <killing@multiplay.co.uk> wrote:
> 
> 
> 
> On 08/12/2015 18:44, Dag-Erling Smørgrav wrote:
>> Warner Losh <imp@bsdimp.com> writes:
>>> Dag-Erling Smørgrav <des@des.no> writes:
>>>> But the filesystem does not know whether the underlying storage is
>>>> electromechanical or solid-state, nor does it know whether the user
>>>> cares much about seek times (unless we introduce the heuristic
>>>> "avoid creating holes unless the file already has them, in which
>>>> case the userland probably does not care").
>>> Actually, the filesystem does know. Or has some knowledge of what
>>> is supported and what isn't. BIO_DELETE support is a strong indicator
>>> of a flash or other log-type system.
>> The filesystem can ask the layer below if BIO_DELETE is supported, but
>> should not assume anything about what it means.  For instance, I could
>> write a gnop-like module that translates BIO_DELETE into an all-zeroes
>> BIO_WRITE and passes everything else unmodified.  It would provide a
>> stronger guarantee than, say, SATA TRIM but would also have a completely
>> different performance profile (even on SSDs, since it would do its work
>> synchronously whereas TRIM works asynchronously).

That ship has sailed. UFS, at least, assumes that if TRIM is supported then
relocating files to be contiguous is bad.

But writing a gnop module that did the BIO_DELETE thing would be bogus.
BIO_DELETE does not mean that blocks will read back as zeros. But that’s
not what BIO_DELETE means. So, sure you could invent a stupid thing that
breaks the rules, and thus the assumptions of the other code, but why would
you want to do that?

The SATA trims are actually synchronous (in the absence of power failures).
Once you TRIM The data, it is gone. And depending what bits are set in
the identify response, you can count on different things. But to say they
happen asynchronously because of implementation details about when the data
is actually erased is missing the point. Also, your BIO_DELETE example
wouldn’t guarantee the data is erased either. Writes to log append devices
(like SSDs) are like a TRIM followed by a write: the old LBA mapping is
discarded and a new one replaces it.

>> Anyway, my point is that Maxim needs to revise his assumptions.
> Just to clarify most consumer devices process TRIM synchronously, not asynchronously.

It also depends on what you mean by ‘process’ here.

> Your example isn't actually just an example CAM scsi_da has a number of different ways it can process BIO_DELETE:
> * ATA TRIM
> * SCSI UMAP
> * Write Same 16
> * Write Same 10
> * Zero
> 
> So you example is actually exists in practice in the FreeBSD code base ;-)

All these are effectively TRIM operations. The devices that implement them
use them as hints to optimize storage. DES’ BIO_DELETE -> WRITE zero
example doesn’t optimize storage at all, nor does it give the lower layers
any clue about how to optimize the storage. All the SCSI delete types
do give that hint.

Warner


[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJWZylxAAoJEGwc0Sh9sBEAQVsQAMmXAMbT4ujIa1fwJHBI0NKK
Mk/v2egPRzkqzp6WrXYFaK1h5XOpjFtnJt2R3SD9PbVdz80M3CHVhb0Qv8XaXWVr
z6KYLaQpcrMCPe1Gdeym0gVNvS1loUTsotRisVAiW1EhbJnsx+0Wl7ad8O8bwx2+
6zGX6hz+Kpcy2vHzzubRoJaNoRJnm8lY/lP+qsRdZWNsROdCwjCj/qwUDeGr25xA
Z0/MS+NZrPoyEuPdr5vjCrChyK/mzl5+mv3GJWO3OP+JsAcTOzhSxEr0nMtEcXyN
zHKeo/k79UcIPnXOd6bg2UM0/P+9+m/VkE3rCLF/MVY5wt2O6PiMDEblpbVGQCid
2q3MTBtQ3DDJ0IW6TveLlrfvk6XnlyO5NX+Th0sgB2HASCc6OmyyC2gu8T+gB37Q
2UsOU1pJvx4XBfE7cvPMpj0T40ax88zPWNamaTSyW5AhxZI8rGPst8BF3hCzHZqX
yULRAlLn5lE1yeIUGvV86VLP+xFFnoRf7o8TB6uL6wIQ/O+s34EdPzQzmKpFVJMO
MKr1dffdZLKtWsFnUY8yUXExhLxUR1W+zwRbNwetqwmgy6VJ4btu/ZES91t+wmVu
gnDMGMaYv2HHhQHGZMicN3H60ywGIVLpA4PxLPK7s9vojMY6u9NNx/Bp3LRqkQ97
Vli8lviRtFAtZbNEr+4r
=flRM
-----END PGP SIGNATURE-----

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0DB97CBA-4DC3-4D52-AE9D-54546292D66F>