From 9c08d43ab78b2979237238d41a8fad62f4916245 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Mon, 24 Aug 2020 08:41:04 +0900 Subject: [PATCH] nvme_spec: Update for asymmetric namespace access change notices Signed-off-by: Shuhei Matsumoto Change-Id: I9909335ba2b6c45c4fb8a32403c0364711006640 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3908 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Ben Walker --- include/spdk/nvme_spec.h | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/include/spdk/nvme_spec.h b/include/spdk/nvme_spec.h index 8506025c7..ddcf0a91c 100644 --- a/include/spdk/nvme_spec.h +++ b/include/spdk/nvme_spec.h @@ -715,7 +715,8 @@ union spdk_nvme_feat_async_event_configuration { uint32_t ns_attr_notice : 1; uint32_t fw_activation_notice : 1; uint32_t telemetry_log_notice : 1; - uint32_t reserved : 21; + uint32_t ana_change_notice : 1; + uint32_t reserved : 20; } bits; }; SPDK_STATIC_ASSERT(sizeof(union spdk_nvme_feat_async_event_configuration) == 4, "Incorrect size"); @@ -1270,6 +1271,9 @@ enum spdk_nvme_media_error_status_code { */ enum spdk_nvme_path_status_code { SPDK_NVME_SC_INTERNAL_PATH_ERROR = 0x00, + SPDK_NVME_SC_ASYMMETRIC_ACCESS_PERSISTENT_LOSS = 0x01, + SPDK_NVME_SC_ASYMMETRIC_ACCESS_INACCESSIBLE = 0x02, + SPDK_NVME_SC_ASYMMETRIC_ACCESS_TRANSITION = 0x03, SPDK_NVME_SC_CONTROLLER_PATH_ERROR = 0x60, @@ -1651,7 +1655,12 @@ struct __attribute__((packed)) __attribute__((aligned)) spdk_nvme_ctrlr_data { /** Supports sending Firmware Activation Notices. */ uint32_t fw_activation_notices : 1; - uint32_t reserved2 : 22; + uint32_t reserved2 : 1; + + /** Supports Asymmetric Namespace Access Change Notices. */ + uint32_t ana_change_notices : 1; + + uint32_t reserved3 : 20; } oaes; /** controller attributes */ @@ -1855,7 +1864,10 @@ struct __attribute__((packed)) __attribute__((aligned)) spdk_nvme_ctrlr_data { } sanicap; /* bytes 332-342 */ - uint8_t reserved3[11]; + uint8_t reserved3[10]; + + /** ANA transition time */ + uint8_t anatt; /* bytes 343: Asymmetric namespace access capabilities */ struct { @@ -2711,8 +2723,10 @@ enum spdk_nvme_async_event_info_notice { SPDK_NVME_ASYNC_EVENT_FW_ACTIVATION_START = 0x1, /* Telemetry Log Changed */ SPDK_NVME_ASYNC_EVENT_TELEMETRY_LOG_CHANGED = 0x2, + /* Asymmetric Namespace Access Change */ + SPDK_NVME_ASYNC_EVENT_ANA_CHANGE = 0x3, - /* 0x3 - 0xFF Reserved */ + /* 0x4 - 0xFF Reserved */ }; /**