Current write-hint infrastructure supports 6 temperature-based data life hints. The series extends the infrastructure with a new temperature-agnostic placement-type hint. New fcntl codes F_{SET/GET}_RW_HINT_EX allow to send the hint type/value on file. See patch #3 commit description for the details. Overall this creates 128 placement hint values [*] that users can pass. Patch #5 adds the ability to map these new hint values to nvme-specific placement-identifiers. Patch #4 restricts SCSI to use only life hint values. Patch #1 and #2 are simple prep patches. [*] While the user-interface can support more, this limit is due to the in-kernel plumbing consideration of the inode size. Pahole showed 32-bit hole in the inode, but the code had this comment too: /* 32-bit hole reserved for expanding i_fsnotify_mask */ Not must, but it will be good to know if a byte (or two) can be used here. Changes since v3: - 4 new patches to introduce write-placement hints - Make nvme patch use the placement hints rather than write-life 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 (4): fs, block: refactor enum rw_hint fcntl: rename rw_hint_* to rw_life_hint_* fcntl: add F_{SET/GET}_RW_HINT_EX nvme: enable FDP support Nitesh Shetty (1): sd: limit to use write life hints drivers/nvme/host/core.c | 81 ++++++++++++++++++++++++++++++++++++++ drivers/nvme/host/nvme.h | 4 ++ drivers/scsi/sd.c | 7 ++-- fs/buffer.c | 4 +- fs/f2fs/f2fs.h | 4 +- fs/f2fs/segment.c | 4 +- fs/fcntl.c | 79 ++++++++++++++++++++++++++++++++++--- include/linux/blk-mq.h | 2 +- include/linux/blk_types.h | 2 +- include/linux/fs.h | 2 +- include/linux/nvme.h | 19 +++++++++ include/linux/rw_hint.h | 20 +++++++--- include/uapi/linux/fcntl.h | 14 +++++++ 13 files changed, 218 insertions(+), 24 deletions(-) -- 2.25.1