[PATCH 0/6] nvme: improve discard_granularity spec compliance

Caleb Sander Mateos csander at purestorage.com
Thu Feb 19 19:28:03 PST 2026


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 wel, in case the
discard granularity doesn't fit in the 16-bit NPDG and NPDA fields.

Caleb Sander Mateos (6):
  nvme: add preferred I/O size fields to struct nvme_id_ns_nvm
  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          | 21 ++++++++++++++++-----
 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              | 10 ++++++++--
 5 files changed, 43 insertions(+), 11 deletions(-)

-- 
2.45.2




More information about the Linux-nvme mailing list