[PATCHv13 00/11] block write streams with nvme fdp

Keith Busch
2024-12-10T20:04:46Z

From: Keith Busch <kbusch@kernel.org>

Previous discussion threads:

v12: https://lore.kernel.org/linux-nvme/20241206221801.790690-1-kbusch@meta.com/T/#u
v11: https://lore.kernel.org/linux-nvme/20241206015308.3342386-1-kbusch@meta.com/T/#u

Changes from v12:

- Removed statx. We need additional time to consider the best way to
expose these attributes. Until then, applications can fallback to the
sysfs block attribute to query write stream settings.

- More verbose logging on error.

- Added reviews.

- Explicitly clear the return value to 0 for unsupported or
unrecognized FDP configs; while it's not technically needed (it's
already 0 in these paths), it makes it clear that a non-error return
wasn't an accidental oversight.

- Fixed the compiler warnings from unitialized variable; switched the
do-while to a more clear for-loop.

- Fixed long-line wrapping

- Memory leak when cleaning up the namespace head.

- Don't rescan FDP configuration if we successfully set it up before.
The namespaces' FDP configuration is static.

- Better function name querying the size granularity of the FDP reclaim
unit.

Christoph Hellwig (7):
fs: add a write stream field to the kiocb
block: add a bi_write_stream field
block: introduce a write_stream_granularity queue limit
block: expose write streams for block device nodes
nvme: add a nvme_get_log_lsi helper
nvme: pass a void pointer to nvme_get/set_features for the result
nvme: add FDP definitions

Keith Busch (4):
block: introduce max_write_streams queue limit
io_uring: enable per-io write streams
nvme: register fdp parameters with the block layer
nvme: use fdp streams if write stream is provided

Documentation/ABI/stable/sysfs-block | 15 +++
block/bio.c | 2 +
block/blk-crypto-fallback.c | 1 +
block/blk-merge.c | 4 +
block/blk-sysfs.c | 6 +
block/bounce.c | 1 +
block/fops.c | 23 ++++
drivers/nvme/host/core.c | 186 ++++++++++++++++++++++++++-
drivers/nvme/host/nvme.h | 7 +-
include/linux/blk_types.h | 1 +
include/linux/blkdev.h | 16 +++
include/linux/fs.h | 1 +
include/linux/nvme.h | 77 +++++++++++
include/uapi/linux/io_uring.h | 4 +
io_uring/io_uring.c | 2 +
io_uring/rw.c | 1 +
16 files changed, 341 insertions(+), 6 deletions(-)

--
2.43.5