nvme: add support for streams and directives write-stream.2
authorJens Axboe <axboe@kernel.dk>
Tue, 13 Jun 2017 20:45:07 +0000 (14:45 -0600)
committerJens Axboe <axboe@fb.com>
Tue, 13 Jun 2017 22:22:18 +0000 (16:22 -0600)
commitddcd88625ba4a2d78af3de75a79ab995874312c4
treefb86c1814052085e6b692f2ad7a33ac12d8ef2af
parenta9cdb825ae5008e802753a83abf0e8dd4724bbd8
nvme: add support for streams and directives

This adds support for Directives in NVMe, particular for the Streams
directive. Support for Directives is a new feature in NVMe 1.3. It
allows a user to pass in information about where to store the data,
so that it the device can do so most effiently. If an application is
managing and writing data with different life times, mixing differently
retentioned data onto the same locations on flash can cause write
amplification to grow. This, in turn, will reduce performance and
life time of the device.

We default to allocating 4 streams per name space, but it is
configurable with the 'streams_per_ns' module option. If a write stream
is set in a write, flag is as such before sending it to the device.

Some debug stuff in this patch, dumping streams ID params when
we load nvme.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/core.c
drivers/nvme/host/nvme.h
include/linux/nvme.h