diff --git a/examples/nvme/identify/identify.c b/examples/nvme/identify/identify.c index e3362928e1..ab8d759351 100644 --- a/examples/nvme/identify/identify.c +++ b/examples/nvme/identify/identify.c @@ -309,8 +309,23 @@ print_controller(struct nvme_controller *ctrlr, struct pci_device *pci_dev) cdata->oncs.write_unc ? "Supported" : "Not Supported"); printf("Dataset Management Command: %s\n", cdata->oncs.dsm ? "Supported" : "Not Supported"); + printf("Write Zeroes Command: %s\n", + cdata->oncs.write_zeroes ? "Supported" : "Not Supported"); + printf("Set Features Save Field: %s\n", + cdata->oncs.set_features_save ? "Supported" : "Not Supported"); + printf("Reservations: %s\n", + cdata->oncs.reservations ? "Supported" : "Not Supported"); printf("Volatile Write Cache: %s\n", cdata->vwc.present ? "Present" : "Not Present"); + printf("Scatter-Gather List\n"); + printf(" SGL Command Set: %s\n", + cdata->sgls.supported ? "Supported" : "Not Supported"); + printf(" SGL Bit Bucket Descriptor: %s\n", + cdata->sgls.bit_bucket_descriptor_supported ? "Supported" : "Not Supported"); + printf(" SGL Metadata Pointer: %s\n", + cdata->sgls.metadata_pointer_supported ? "Supported" : "Not Supported"); + printf(" Oversized SGL: %s\n", + cdata->sgls.oversized_sgl_supported ? "Supported" : "Not Supported"); printf("\n"); if (features[NVME_FEAT_ARBITRATION].valid) { diff --git a/include/spdk/nvme_spec.h b/include/spdk/nvme_spec.h index 8780f7b1b6..99f49e3170 100644 --- a/include/spdk/nvme_spec.h +++ b/include/spdk/nvme_spec.h @@ -650,7 +650,10 @@ struct __attribute__((packed)) nvme_controller_data { uint16_t compare : 1; uint16_t write_unc : 1; uint16_t dsm: 1; - uint16_t reserved: 13; + uint16_t write_zeroes: 1; + uint16_t set_features_save: 1; + uint16_t reservations: 1; + uint16_t reserved: 10; } oncs; /** fused operation support */