[PATCH v2 0/7] nvme: set discard_granularity from NPDG/NPDA

Caleb Sander Mateos
2026-02-21T03:33:14Z

NVMe block devices always report the logical block size for the
discard_granularity queue limit. However, more accurate values may be
available in the NPDG/NPDA fields of the Identify Namespace structure or
the NPDGL/NPDAL fields of the NVM Command Set Specific Identify
Namespace structure. So use these values to compute discard_granularity.

Also fix the use of the OPTPERF field to better comply with version 2.1
of the NVMe spec.

Update the target side to report NPDGL and NPDAL as well, in case the
discard granularity doesn't fit in the 16-bit NPDG and NPDA fields.

Caleb Sander Mateos (7):
nvme: add preferred I/O size fields to struct nvme_id_ns_nvm
nvme: fold nvme_config_discard() into nvme_update_disk_info()
nvme: update nvme_id_ns OPTPERF constants
nvme: always issue I/O Command Set specific Identify Namespace
nvme: set discard_granularity from NPDG/NPDA
nvmet: use NVME_NS_FEAT_OPTPERF_SHIFT
nvmet: report NPDGL and NPDAL

drivers/nvme/host/core.c | 74 +++++++++++++++++++------------
drivers/nvme/target/admin-cmd.c | 2 +
drivers/nvme/target/io-cmd-bdev.c | 19 ++++++--
drivers/nvme/target/nvmet.h | 2 +
include/linux/nvme.h | 13 +++++-
5 files changed, 76 insertions(+), 34 deletions(-)

--
2.45.2