[PATCH v7 0/3] FDP and per-io hints

Kanchan Joshi
2024-09-30T18:20:58Z

Another spin to incorporate the feedback from LPC and previous
iterations. The series adds two capabilities:
- FDP support at NVMe level (patch #1)
- Per-io hinting via io_uring (patch #3)
Patch #2 is needed to do per-io hints.

The motivation and interface details are present in the commit
descriptions.

Testing:
Done with fcntl and liburing based custom applications.
On raw block device, ext4, xfs, btrfs and F2FS.
Checked that no regression occurs for application that use per-inode
hints.
Checked that per-io hints, when passed, take the precedence over per-inode
hints.

Changes since v6:
- Change io_uring interface to pass hints as SQE metadata (Pavel, Hannes)

Changes since v5:
- Drop placement hints
- Add per-io hint interface

Changes since v4:
- Retain the size/type checking on the enum (Bart)
- Use the name "*_lifetime_hint" rather than "*_life_hint" (Bart)

Changes since v3:
- 4 new patches to introduce placement hints
- Make nvme patch use the placement hints rather than lifetime hints

Changes since v2:
- Base it on nvme-6.11 and resolve a merge conflict

Changes since v1:
- Reduce the fetched plids from 128 to 6 (Keith)
- Use struct_size for a calculation (Keith)
- Handle robot/sparse warning

Kanchan Joshi (3):
nvme: enable FDP support
block, fs: restore kiocb based write hint processing
io_uring: enable per-io hinting capability

Kanchan Joshi (3):
nvme: enable FDP support
block, fs: restore kiocb based write hint processing
io_uring: enable per-io hinting capability

block/fops.c | 6 +--
drivers/nvme/host/core.c | 70 +++++++++++++++++++++++++++++++++++
drivers/nvme/host/nvme.h | 4 ++
fs/aio.c | 1 +
fs/cachefiles/io.c | 1 +
fs/direct-io.c | 2 +-
fs/fcntl.c | 22 -----------
fs/iomap/direct-io.c | 2 +-
include/linux/fs.h | 8 ++++
include/linux/nvme.h | 19 ++++++++++
include/linux/rw_hint.h | 24 ++++++++++++
include/uapi/linux/io_uring.h | 19 ++++++++++
io_uring/rw.c | 24 ++++++++++++
13 files changed, 175 insertions(+), 27 deletions(-)

--
2.25.1