Loading include/spdk/nvme_spec.h +22 −2 Original line number Diff line number Diff line Loading @@ -492,11 +492,13 @@ enum spdk_nvme_generic_command_status_code { SPDK_NVME_SC_INVALID_SGL_SUBTYPE = 0x17, SPDK_NVME_SC_HOSTID_INCONSISTENT_FORMAT = 0x18, SPDK_NVME_SC_KEEP_ALIVE_EXPIRED = 0x19, SPDK_NVME_SC_KEEP_ALIVE_INVALID = 0x1A, SPDK_NVME_SC_KEEP_ALIVE_INVALID = 0x1a, SPDK_NVME_SC_LBA_OUT_OF_RANGE = 0x80, SPDK_NVME_SC_CAPACITY_EXCEEDED = 0x81, SPDK_NVME_SC_NAMESPACE_NOT_READY = 0x82, SPDK_NVME_SC_RESERVATION_CONFLICT = 0x83, SPDK_NVME_SC_FORMAT_IN_PROGRESS = 0x84, }; /** Loading @@ -514,7 +516,24 @@ enum spdk_nvme_command_specific_status_code { SPDK_NVME_SC_INVALID_INTERRUPT_VECTOR = 0x08, SPDK_NVME_SC_INVALID_LOG_PAGE = 0x09, SPDK_NVME_SC_INVALID_FORMAT = 0x0a, SPDK_NVME_SC_FIRMWARE_REQUIRES_RESET = 0x0b, SPDK_NVME_SC_FIRMWARE_REQ_CONVENTIONAL_RESET = 0x0b, SPDK_NVME_SC_INVALID_QUEUE_DELETION = 0x0c, SPDK_NVME_SC_FEATURE_ID_NOT_SAVEABLE = 0x0d, SPDK_NVME_SC_FEATURE_NOT_CHANGEABLE = 0x0e, SPDK_NVME_SC_FEATURE_NOT_NAMESPACE_SPECIFIC = 0x0f, SPDK_NVME_SC_FIRMWARE_REQ_NVM_RESET = 0x10, SPDK_NVME_SC_FIRMWARE_REQ_RESET = 0x11, SPDK_NVME_SC_FIRMWARE_REQ_MAX_TIME_VIOLATION = 0x12, SPDK_NVME_SC_FIRMWARE_ACTIVATION_PROHIBITED = 0x13, SPDK_NVME_SC_OVERLAPPING_RANGE = 0x14, SPDK_NVME_SC_NAMESPACE_INSUFFICIENT_CAPACITY = 0x15, SPDK_NVME_SC_NAMESPACE_ID_UNAVAILABLE = 0x16, /* 0x17 - reserved */ SPDK_NVME_SC_NAMESPACE_ALREADY_ATTACHED = 0x18, SPDK_NVME_SC_NAMESPACE_IS_PRIVATE = 0x19, SPDK_NVME_SC_NAMESPACE_NOT_ATTACHED = 0x1a, SPDK_NVME_SC_THINPROVISIONING_NOT_SUPPORTED = 0x1b, SPDK_NVME_SC_CONTROLLER_LIST_INVALID = 0x1c, SPDK_NVME_SC_CONFLICTING_ATTRIBUTES = 0x80, SPDK_NVME_SC_INVALID_PROTECTION_INFO = 0x81, Loading @@ -532,6 +551,7 @@ enum spdk_nvme_media_error_status_code { SPDK_NVME_SC_REFERENCE_TAG_CHECK_ERROR = 0x84, SPDK_NVME_SC_COMPARE_FAILURE = 0x85, SPDK_NVME_SC_ACCESS_DENIED = 0x86, SPDK_NVME_SC_DEALLOCATED_OR_UNWRITTEN_BLOCK = 0x87, }; /** Loading lib/nvme/nvme_qpair.c +30 −2 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ nvme_qpair_print_command(struct spdk_nvme_qpair *qpair, struct spdk_nvme_cmd *cm static const struct nvme_string generic_status[] = { { SPDK_NVME_SC_SUCCESS, "SUCCESS" }, { SPDK_NVME_SC_INVALID_OPCODE, "INVALID OPCODE" }, { SPDK_NVME_SC_INVALID_FIELD, "INVALID_FIELD" }, { SPDK_NVME_SC_INVALID_FIELD, "INVALID FIELD" }, { SPDK_NVME_SC_COMMAND_ID_CONFLICT, "COMMAND ID CONFLICT" }, { SPDK_NVME_SC_DATA_TRANSFER_ERROR, "DATA TRANSFER ERROR" }, { SPDK_NVME_SC_ABORTED_POWER_LOSS, "ABORTED - POWER LOSS" }, Loading @@ -170,9 +170,19 @@ static const struct nvme_string generic_status[] = { { SPDK_NVME_SC_ABORTED_MISSING_FUSED, "ABORTED - MISSING FUSED" }, { SPDK_NVME_SC_INVALID_NAMESPACE_OR_FORMAT, "INVALID NAMESPACE OR FORMAT" }, { SPDK_NVME_SC_COMMAND_SEQUENCE_ERROR, "COMMAND SEQUENCE ERROR" }, { SPDK_NVME_SC_INVALID_SGL_SEG_DESCRIPTOR, "INVALID SGL SEGMENT DESCRIPTOR" }, { SPDK_NVME_SC_INVALID_NUM_SGL_DESCIRPTORS, "INVALID NUMBER OF SGL DESCRIPTORS" }, { SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID, "DATA SGL LENGTH INVALID" }, { SPDK_NVME_SC_METADATA_SGL_LENGTH_INVALID, "METADATA SGL LENGTH INVALID" }, { SPDK_NVME_SC_SGL_DESCRIPTOR_TYPE_INVALID, "SGL DESCRIPTOR TYPE INVALID" }, { SPDK_NVME_SC_INVALID_CONTROLLER_MEM_BUF, "INVALID CONTROLLER MEMORY BUFFER" }, { SPDK_NVME_SC_INVALID_PRP_OFFSET, "INVALID PRP OFFSET" }, { SPDK_NVME_SC_ATOMIC_WRITE_UNIT_EXCEEDED, "ATOMIC WRITE UNIT EXCEEDED" }, { SPDK_NVME_SC_LBA_OUT_OF_RANGE, "LBA OUT OF RANGE" }, { SPDK_NVME_SC_CAPACITY_EXCEEDED, "CAPACITY EXCEEDED" }, { SPDK_NVME_SC_NAMESPACE_NOT_READY, "NAMESPACE NOT READY" }, { SPDK_NVME_SC_RESERVATION_CONFLICT, "RESERVATION CONFLICT" }, { SPDK_NVME_SC_FORMAT_IN_PROGRESS, "FORMAT IN PROGRESS" }, { 0xFFFF, "GENERIC" } }; Loading @@ -187,7 +197,23 @@ static const struct nvme_string command_specific_status[] = { { SPDK_NVME_SC_INVALID_INTERRUPT_VECTOR, "INVALID INTERRUPT VECTOR" }, { SPDK_NVME_SC_INVALID_LOG_PAGE, "INVALID LOG PAGE" }, { SPDK_NVME_SC_INVALID_FORMAT, "INVALID FORMAT" }, { SPDK_NVME_SC_FIRMWARE_REQUIRES_RESET, "FIRMWARE REQUIRES RESET" }, { SPDK_NVME_SC_FIRMWARE_REQ_CONVENTIONAL_RESET, "FIRMWARE REQUIRES CONVENTIONAL RESET" }, { SPDK_NVME_SC_INVALID_QUEUE_DELETION, "INVALID QUEUE DELETION" }, { SPDK_NVME_SC_FEATURE_ID_NOT_SAVEABLE, "FEATURE ID NOT SAVEABLE" }, { SPDK_NVME_SC_FEATURE_NOT_CHANGEABLE, "FEATURE NOT CHANGEABLE" }, { SPDK_NVME_SC_FEATURE_NOT_NAMESPACE_SPECIFIC, "FEATURE NOT NAMESPACE SPECIFIC" }, { SPDK_NVME_SC_FIRMWARE_REQ_NVM_RESET, "FIRMWARE REQUIRES NVM RESET" }, { SPDK_NVME_SC_FIRMWARE_REQ_RESET, "FIRMWARE REQUIRES RESET" }, { SPDK_NVME_SC_FIRMWARE_REQ_MAX_TIME_VIOLATION, "FIRMWARE REQUIRES MAX TIME VIOLATION" }, { SPDK_NVME_SC_FIRMWARE_ACTIVATION_PROHIBITED, "FIRMWARE ACTIVATION PROHIBITED" }, { SPDK_NVME_SC_OVERLAPPING_RANGE, "OVERLAPPING RANGE" }, { SPDK_NVME_SC_NAMESPACE_INSUFFICIENT_CAPACITY, "NAMESPACE INSUFFICIENT CAPACITY" }, { SPDK_NVME_SC_NAMESPACE_ID_UNAVAILABLE, "NAMESPACE ID UNAVAILABLE" }, { SPDK_NVME_SC_NAMESPACE_ALREADY_ATTACHED, "NAMESPACE ALREADY ATTACHED" }, { SPDK_NVME_SC_NAMESPACE_IS_PRIVATE, "NAMESPACE IS PRIVATE" }, { SPDK_NVME_SC_NAMESPACE_NOT_ATTACHED, "NAMESPACE NOT ATTACHED" }, { SPDK_NVME_SC_THINPROVISIONING_NOT_SUPPORTED, "THINPROVISIONING NOT SUPPORTED" }, { SPDK_NVME_SC_CONTROLLER_LIST_INVALID, "CONTROLLER LIST INVALID" }, { SPDK_NVME_SC_CONFLICTING_ATTRIBUTES, "CONFLICTING ATTRIBUTES" }, { SPDK_NVME_SC_INVALID_PROTECTION_INFO, "INVALID PROTECTION INFO" }, { SPDK_NVME_SC_ATTEMPTED_WRITE_TO_RO_PAGE, "WRITE TO RO PAGE" }, Loading @@ -202,6 +228,7 @@ static const struct nvme_string media_error_status[] = { { SPDK_NVME_SC_REFERENCE_TAG_CHECK_ERROR, "REFERENCE TAG CHECK ERROR" }, { SPDK_NVME_SC_COMPARE_FAILURE, "COMPARE FAILURE" }, { SPDK_NVME_SC_ACCESS_DENIED, "ACCESS DENIED" }, { SPDK_NVME_SC_DEALLOCATED_OR_UNWRITTEN_BLOCK, "DEALLOCATED OR UNWRITTEN BLOCK" }, { 0xFFFF, "MEDIA ERROR" } }; Loading Loading @@ -252,6 +279,7 @@ nvme_completion_is_retry(const struct spdk_nvme_cpl *cpl) case SPDK_NVME_SCT_GENERIC: switch ((int)cpl->status.sc) { case SPDK_NVME_SC_NAMESPACE_NOT_READY: case SPDK_NVME_SC_FORMAT_IN_PROGRESS: if (cpl->status.dnr) { return false; } else { Loading test/lib/nvme/unit/nvme_qpair_c/nvme_qpair_ut.c +33 −0 Original line number Diff line number Diff line Loading @@ -672,6 +672,12 @@ static void test_nvme_completion_is_retry(void) cpl.status.dnr = 0; CU_ASSERT_TRUE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_FORMAT_IN_PROGRESS; cpl.status.dnr = 1; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.dnr = 0; CU_ASSERT_TRUE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_OPCODE; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); Loading Loading @@ -705,12 +711,39 @@ static void test_nvme_completion_is_retry(void) cpl.status.sc = SPDK_NVME_SC_COMMAND_SEQUENCE_ERROR; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_SGL_SEG_DESCRIPTOR; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_NUM_SGL_DESCIRPTORS; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_METADATA_SGL_LENGTH_INVALID; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_SGL_DESCRIPTOR_TYPE_INVALID; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_CONTROLLER_MEM_BUF; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_PRP_OFFSET; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_ATOMIC_WRITE_UNIT_EXCEEDED; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_LBA_OUT_OF_RANGE; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_CAPACITY_EXCEEDED; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_RESERVATION_CONFLICT; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = 0x70; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); Loading Loading
include/spdk/nvme_spec.h +22 −2 Original line number Diff line number Diff line Loading @@ -492,11 +492,13 @@ enum spdk_nvme_generic_command_status_code { SPDK_NVME_SC_INVALID_SGL_SUBTYPE = 0x17, SPDK_NVME_SC_HOSTID_INCONSISTENT_FORMAT = 0x18, SPDK_NVME_SC_KEEP_ALIVE_EXPIRED = 0x19, SPDK_NVME_SC_KEEP_ALIVE_INVALID = 0x1A, SPDK_NVME_SC_KEEP_ALIVE_INVALID = 0x1a, SPDK_NVME_SC_LBA_OUT_OF_RANGE = 0x80, SPDK_NVME_SC_CAPACITY_EXCEEDED = 0x81, SPDK_NVME_SC_NAMESPACE_NOT_READY = 0x82, SPDK_NVME_SC_RESERVATION_CONFLICT = 0x83, SPDK_NVME_SC_FORMAT_IN_PROGRESS = 0x84, }; /** Loading @@ -514,7 +516,24 @@ enum spdk_nvme_command_specific_status_code { SPDK_NVME_SC_INVALID_INTERRUPT_VECTOR = 0x08, SPDK_NVME_SC_INVALID_LOG_PAGE = 0x09, SPDK_NVME_SC_INVALID_FORMAT = 0x0a, SPDK_NVME_SC_FIRMWARE_REQUIRES_RESET = 0x0b, SPDK_NVME_SC_FIRMWARE_REQ_CONVENTIONAL_RESET = 0x0b, SPDK_NVME_SC_INVALID_QUEUE_DELETION = 0x0c, SPDK_NVME_SC_FEATURE_ID_NOT_SAVEABLE = 0x0d, SPDK_NVME_SC_FEATURE_NOT_CHANGEABLE = 0x0e, SPDK_NVME_SC_FEATURE_NOT_NAMESPACE_SPECIFIC = 0x0f, SPDK_NVME_SC_FIRMWARE_REQ_NVM_RESET = 0x10, SPDK_NVME_SC_FIRMWARE_REQ_RESET = 0x11, SPDK_NVME_SC_FIRMWARE_REQ_MAX_TIME_VIOLATION = 0x12, SPDK_NVME_SC_FIRMWARE_ACTIVATION_PROHIBITED = 0x13, SPDK_NVME_SC_OVERLAPPING_RANGE = 0x14, SPDK_NVME_SC_NAMESPACE_INSUFFICIENT_CAPACITY = 0x15, SPDK_NVME_SC_NAMESPACE_ID_UNAVAILABLE = 0x16, /* 0x17 - reserved */ SPDK_NVME_SC_NAMESPACE_ALREADY_ATTACHED = 0x18, SPDK_NVME_SC_NAMESPACE_IS_PRIVATE = 0x19, SPDK_NVME_SC_NAMESPACE_NOT_ATTACHED = 0x1a, SPDK_NVME_SC_THINPROVISIONING_NOT_SUPPORTED = 0x1b, SPDK_NVME_SC_CONTROLLER_LIST_INVALID = 0x1c, SPDK_NVME_SC_CONFLICTING_ATTRIBUTES = 0x80, SPDK_NVME_SC_INVALID_PROTECTION_INFO = 0x81, Loading @@ -532,6 +551,7 @@ enum spdk_nvme_media_error_status_code { SPDK_NVME_SC_REFERENCE_TAG_CHECK_ERROR = 0x84, SPDK_NVME_SC_COMPARE_FAILURE = 0x85, SPDK_NVME_SC_ACCESS_DENIED = 0x86, SPDK_NVME_SC_DEALLOCATED_OR_UNWRITTEN_BLOCK = 0x87, }; /** Loading
lib/nvme/nvme_qpair.c +30 −2 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ nvme_qpair_print_command(struct spdk_nvme_qpair *qpair, struct spdk_nvme_cmd *cm static const struct nvme_string generic_status[] = { { SPDK_NVME_SC_SUCCESS, "SUCCESS" }, { SPDK_NVME_SC_INVALID_OPCODE, "INVALID OPCODE" }, { SPDK_NVME_SC_INVALID_FIELD, "INVALID_FIELD" }, { SPDK_NVME_SC_INVALID_FIELD, "INVALID FIELD" }, { SPDK_NVME_SC_COMMAND_ID_CONFLICT, "COMMAND ID CONFLICT" }, { SPDK_NVME_SC_DATA_TRANSFER_ERROR, "DATA TRANSFER ERROR" }, { SPDK_NVME_SC_ABORTED_POWER_LOSS, "ABORTED - POWER LOSS" }, Loading @@ -170,9 +170,19 @@ static const struct nvme_string generic_status[] = { { SPDK_NVME_SC_ABORTED_MISSING_FUSED, "ABORTED - MISSING FUSED" }, { SPDK_NVME_SC_INVALID_NAMESPACE_OR_FORMAT, "INVALID NAMESPACE OR FORMAT" }, { SPDK_NVME_SC_COMMAND_SEQUENCE_ERROR, "COMMAND SEQUENCE ERROR" }, { SPDK_NVME_SC_INVALID_SGL_SEG_DESCRIPTOR, "INVALID SGL SEGMENT DESCRIPTOR" }, { SPDK_NVME_SC_INVALID_NUM_SGL_DESCIRPTORS, "INVALID NUMBER OF SGL DESCRIPTORS" }, { SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID, "DATA SGL LENGTH INVALID" }, { SPDK_NVME_SC_METADATA_SGL_LENGTH_INVALID, "METADATA SGL LENGTH INVALID" }, { SPDK_NVME_SC_SGL_DESCRIPTOR_TYPE_INVALID, "SGL DESCRIPTOR TYPE INVALID" }, { SPDK_NVME_SC_INVALID_CONTROLLER_MEM_BUF, "INVALID CONTROLLER MEMORY BUFFER" }, { SPDK_NVME_SC_INVALID_PRP_OFFSET, "INVALID PRP OFFSET" }, { SPDK_NVME_SC_ATOMIC_WRITE_UNIT_EXCEEDED, "ATOMIC WRITE UNIT EXCEEDED" }, { SPDK_NVME_SC_LBA_OUT_OF_RANGE, "LBA OUT OF RANGE" }, { SPDK_NVME_SC_CAPACITY_EXCEEDED, "CAPACITY EXCEEDED" }, { SPDK_NVME_SC_NAMESPACE_NOT_READY, "NAMESPACE NOT READY" }, { SPDK_NVME_SC_RESERVATION_CONFLICT, "RESERVATION CONFLICT" }, { SPDK_NVME_SC_FORMAT_IN_PROGRESS, "FORMAT IN PROGRESS" }, { 0xFFFF, "GENERIC" } }; Loading @@ -187,7 +197,23 @@ static const struct nvme_string command_specific_status[] = { { SPDK_NVME_SC_INVALID_INTERRUPT_VECTOR, "INVALID INTERRUPT VECTOR" }, { SPDK_NVME_SC_INVALID_LOG_PAGE, "INVALID LOG PAGE" }, { SPDK_NVME_SC_INVALID_FORMAT, "INVALID FORMAT" }, { SPDK_NVME_SC_FIRMWARE_REQUIRES_RESET, "FIRMWARE REQUIRES RESET" }, { SPDK_NVME_SC_FIRMWARE_REQ_CONVENTIONAL_RESET, "FIRMWARE REQUIRES CONVENTIONAL RESET" }, { SPDK_NVME_SC_INVALID_QUEUE_DELETION, "INVALID QUEUE DELETION" }, { SPDK_NVME_SC_FEATURE_ID_NOT_SAVEABLE, "FEATURE ID NOT SAVEABLE" }, { SPDK_NVME_SC_FEATURE_NOT_CHANGEABLE, "FEATURE NOT CHANGEABLE" }, { SPDK_NVME_SC_FEATURE_NOT_NAMESPACE_SPECIFIC, "FEATURE NOT NAMESPACE SPECIFIC" }, { SPDK_NVME_SC_FIRMWARE_REQ_NVM_RESET, "FIRMWARE REQUIRES NVM RESET" }, { SPDK_NVME_SC_FIRMWARE_REQ_RESET, "FIRMWARE REQUIRES RESET" }, { SPDK_NVME_SC_FIRMWARE_REQ_MAX_TIME_VIOLATION, "FIRMWARE REQUIRES MAX TIME VIOLATION" }, { SPDK_NVME_SC_FIRMWARE_ACTIVATION_PROHIBITED, "FIRMWARE ACTIVATION PROHIBITED" }, { SPDK_NVME_SC_OVERLAPPING_RANGE, "OVERLAPPING RANGE" }, { SPDK_NVME_SC_NAMESPACE_INSUFFICIENT_CAPACITY, "NAMESPACE INSUFFICIENT CAPACITY" }, { SPDK_NVME_SC_NAMESPACE_ID_UNAVAILABLE, "NAMESPACE ID UNAVAILABLE" }, { SPDK_NVME_SC_NAMESPACE_ALREADY_ATTACHED, "NAMESPACE ALREADY ATTACHED" }, { SPDK_NVME_SC_NAMESPACE_IS_PRIVATE, "NAMESPACE IS PRIVATE" }, { SPDK_NVME_SC_NAMESPACE_NOT_ATTACHED, "NAMESPACE NOT ATTACHED" }, { SPDK_NVME_SC_THINPROVISIONING_NOT_SUPPORTED, "THINPROVISIONING NOT SUPPORTED" }, { SPDK_NVME_SC_CONTROLLER_LIST_INVALID, "CONTROLLER LIST INVALID" }, { SPDK_NVME_SC_CONFLICTING_ATTRIBUTES, "CONFLICTING ATTRIBUTES" }, { SPDK_NVME_SC_INVALID_PROTECTION_INFO, "INVALID PROTECTION INFO" }, { SPDK_NVME_SC_ATTEMPTED_WRITE_TO_RO_PAGE, "WRITE TO RO PAGE" }, Loading @@ -202,6 +228,7 @@ static const struct nvme_string media_error_status[] = { { SPDK_NVME_SC_REFERENCE_TAG_CHECK_ERROR, "REFERENCE TAG CHECK ERROR" }, { SPDK_NVME_SC_COMPARE_FAILURE, "COMPARE FAILURE" }, { SPDK_NVME_SC_ACCESS_DENIED, "ACCESS DENIED" }, { SPDK_NVME_SC_DEALLOCATED_OR_UNWRITTEN_BLOCK, "DEALLOCATED OR UNWRITTEN BLOCK" }, { 0xFFFF, "MEDIA ERROR" } }; Loading Loading @@ -252,6 +279,7 @@ nvme_completion_is_retry(const struct spdk_nvme_cpl *cpl) case SPDK_NVME_SCT_GENERIC: switch ((int)cpl->status.sc) { case SPDK_NVME_SC_NAMESPACE_NOT_READY: case SPDK_NVME_SC_FORMAT_IN_PROGRESS: if (cpl->status.dnr) { return false; } else { Loading
test/lib/nvme/unit/nvme_qpair_c/nvme_qpair_ut.c +33 −0 Original line number Diff line number Diff line Loading @@ -672,6 +672,12 @@ static void test_nvme_completion_is_retry(void) cpl.status.dnr = 0; CU_ASSERT_TRUE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_FORMAT_IN_PROGRESS; cpl.status.dnr = 1; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.dnr = 0; CU_ASSERT_TRUE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_OPCODE; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); Loading Loading @@ -705,12 +711,39 @@ static void test_nvme_completion_is_retry(void) cpl.status.sc = SPDK_NVME_SC_COMMAND_SEQUENCE_ERROR; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_SGL_SEG_DESCRIPTOR; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_NUM_SGL_DESCIRPTORS; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_METADATA_SGL_LENGTH_INVALID; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_SGL_DESCRIPTOR_TYPE_INVALID; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_CONTROLLER_MEM_BUF; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_INVALID_PRP_OFFSET; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_ATOMIC_WRITE_UNIT_EXCEEDED; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_LBA_OUT_OF_RANGE; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_CAPACITY_EXCEEDED; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = SPDK_NVME_SC_RESERVATION_CONFLICT; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); cpl.status.sc = 0x70; CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); Loading