Index: sbin/nvmecontrol/identify.c =================================================================== --- sbin/nvmecontrol/identify.c +++ sbin/nvmecontrol/identify.c @@ -171,6 +171,14 @@ for (i = 0; i < sizeof(nsdata->eui64); i++) printf("%02x", nsdata->eui64[i]); printf("\n"); + printf("Metadata Capabilities\n"); + printf(" Extended: %s\n", + nsdata->mc >> NVME_NS_DATA_MC_EXTENDED_SHIFT & NVME_NS_DATA_MC_EXTENDED_MASK ? "Supported" : "Not Supported"); + printf(" Seperate: %s\n", + nsdata->mc >> NVME_NS_DATA_MC_POINTER_SHIFT & NVME_NS_DATA_MC_POINTER_MASK ? "Supported" : "Not Supported"); + printf("Current Metadata: %s\n", + nsdata->lbaf[flbas_fmt] >> NVME_NS_DATA_LBAF_MS_SHIFT & NVME_NS_DATA_LBAF_MS_MASK ? + nsdata->flbas >> NVME_NS_DATA_FLBAS_EXTENDED_SHIFT & NVME_NS_DATA_FLBAS_EXTENDED_MASK ? "Extended" : "Separate" : "None"); for (i = 0; i <= nsdata->nlbaf; i++) { lbaf = nsdata->lbaf[i]; lbads = (lbaf >> NVME_NS_DATA_LBAF_LBADS_SHIFT) & Index: sbin/nvmecontrol/identify_ext.c =================================================================== --- sbin/nvmecontrol/identify_ext.c +++ sbin/nvmecontrol/identify_ext.c @@ -248,6 +248,18 @@ NVME_CTRLR_DATA_FNA_ERASE_ALL_MASK) ? "All-NVM" : "Per-NS", ((cdata->fna >> NVME_CTRLR_DATA_FNA_FORMAT_ALL_SHIFT) & NVME_CTRLR_DATA_FNA_FORMAT_ALL_MASK) ? "All-NVM" : "Per-NS"); + /* + * sanicap is a bit field, so use mask for now + * Bit 0 - crypto + * Bit 1 - block + * Bit 2 - overwrite + */ + printf("Sanitize Crypto Erase: %s\n", + cdata->sanicap & 0x1 ? "Supported" : "Not Supported"); + printf("Sanitize Block Erase: %s\n", + cdata->sanicap & 0x2 ? "Supported" : "Not Supported"); + printf("Sanitize Overwrite: %s\n", + cdata->sanicap & 0x4 ? "Supported" : "Not Supported"); t = (cdata->vwc >> NVME_CTRLR_DATA_VWC_ALL_SHIFT) & NVME_CTRLR_DATA_VWC_ALL_MASK; printf("Volatile Write Cache: %s%s\n",