public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Martin K. Petersen" <martin.petersen@oracle.com>
To: Jens Axboe <axboe@fb.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
	Jeff Moyer <jmoyer@redhat.com>, <linux-kernel@vger.kernel.org>,
	<linux-fsdevel@vger.kernel.org>, <adilger@dilger.ca>,
	<david@fromorbit.com>
Subject: Re: [PATCH v2] Support for write stream IDs
Date: Mon, 11 May 2015 22:50:24 -0400	[thread overview]
Message-ID: <yq1d226mrv3.fsf@sermon.lab.mkp.net> (raw)
In-Reply-To: <554D0502.1080808@fb.com> (Jens Axboe's message of "Fri, 8 May 2015 12:48:34 -0600")

>>>>> "Jens" == Jens Axboe <axboe@fb.com> writes:

Jens,

Jens> There are actual technical challenges on the device side that
Jens> sometimes interferes. [...]

Right now we use the same protocol to speak to USB keys and million
dollar storage arrays. That's because the protocol was designed to be
abstract and completely device agnostic.

What's happening with flash devices and SMR is that all of a sudden
device implementation challenges are being addressed by putting them in
the protocol and punting them to the OS.

That's an obvious and cost-saving approach for a device vendor to take.
But the world would be a different place if we were still dealing with
MFM, RLL, C/H/S addressing and other implementation-specific horrors of
the past. And if that approach had continued we would explicitly have to
deal with erase blocks on USB sticks and manually drive RAID logic
inside disk arrays. But thankfully, with a few exceptions, we didn't go
there.

My beef with the current stream ID stuff and ZAC/ZBC is that those are
steps in the wrong direction in that they are both exclusively focused
on addressing implementation challenges specific to certain kinds of
devices.

The notion of letting the OS tag things as belonging together or being
independent is a useful concept that benefits *any* kind of device.
Those tags can easily be mapped to resource streams in a flash device or
a particular zone cache segment on an SMR drive or in an array.

I would just like the tag to be completely arbitrary so we can manage it
on behalf of all applications and devices. That puts the burden on the
device to manage the OS tag to internal resource mapping but I think
that's a small price to pay to have a concept that works for all classes
of devices, software RAID, etc.

This does not in any way preclude the device communicating "I'd prefer
if you only kept 8 streams going/8 zones open" like we do with all the
other device characteristics. My gripe is that the programming model is
being forcefully changed so we now have to get a permit before
submitting an I/O. And very aggressively clean up since the permits are
being envisioned as super scarce.

Jens> The reality is that we can't demand that devices support thousands
Jens> of streams.

Why not? It's just a number. Tracking a large number of independent
streams hasn't been a problem for storage arrays. Nobody says a 32-bit
ID requires you to concurrently track bazillions of streams. Pick a
reasonable number of live contexts given your device's actual resources.

Jens> The write streams proposal was already approved by t10...

Nope. It's still being discussed.

-- 
Martin K. Petersen	Oracle Linux Engineering

  reply	other threads:[~2015-05-12  2:50 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-05 20:02 [PATCH v2] Support for write stream IDs Jens Axboe
2015-05-05 20:02 ` [PATCH 1/7] block: add support for carrying a stream ID in a bio Jens Axboe
2015-05-05 20:02 ` [PATCH 2/7] Add support for per-file/inode stream ID Jens Axboe
2015-05-05 20:09   ` Christoph Hellwig
2015-05-05 20:02 ` [PATCH 3/7] direct-io: add support for write stream IDs Jens Axboe
2015-05-05 20:02 ` [PATCH 4/7] Add stream ID support for buffered mpage/__block_write_full_page() Jens Axboe
2015-05-05 20:02 ` [PATCH 5/7] btrfs: add support for write stream IDs Jens Axboe
2015-05-05 20:03 ` [PATCH 6/7] xfs: add support for buffered writeback stream ID Jens Axboe
2015-05-05 20:03 ` [PATCH 7/7] ext4: add support for write stream IDs Jens Axboe
2015-05-05 20:07 ` [PATCH v2] Support " Christoph Hellwig
2015-05-05 20:12   ` Jens Axboe
2015-05-05 20:20     ` Christoph Hellwig
2015-05-05 20:31       ` Jens Axboe
2015-05-05 20:43         ` Christoph Hellwig
2015-05-05 20:50         ` Christoph Hellwig
2015-05-05 20:51 ` Jeff Moyer
2015-05-05 21:05   ` Jens Axboe
2015-05-05 21:39     ` Martin K. Petersen
2015-05-05 21:48       ` Jens Axboe
2015-05-05 22:09         ` Martin K. Petersen
2015-05-06 14:26           ` Peter Zijlstra
2015-05-06 17:25             ` Jens Axboe
2015-05-06 16:50           ` Boaz Harrosh
2015-05-06 17:21           ` Jens Axboe
2015-05-07 19:19             ` Martin K. Petersen
2015-05-08 18:48               ` Jens Axboe
2015-05-12  2:50                 ` Martin K. Petersen [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-04-18 20:03 Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=yq1d226mrv3.fsf@sermon.lab.mkp.net \
    --to=martin.petersen@oracle.com \
    --cc=adilger@dilger.ca \
    --cc=axboe@fb.com \
    --cc=david@fromorbit.com \
    --cc=jmoyer@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox