1488570ebSJim Harris /* SPDX-License-Identifier: BSD-3-Clause
2a6dbe372Spaul luse * Copyright (C) 2017 Intel Corporation.
3a9c37fd3SDaniel Verkamp * Copyright (c) 2016 FUJITSU LIMITED, All rights reserved.
4a9c37fd3SDaniel Verkamp */
5a9c37fd3SDaniel Verkamp
6ae431e31SKonrad Sztyber #include "spdk_internal/cunit.h"
7a9c37fd3SDaniel Verkamp
8d8c3ff5fSJim Harris #include "bdev/scsi_nvme.c"
9a9c37fd3SDaniel Verkamp
10a9c37fd3SDaniel Verkamp static int
null_init(void)11a9c37fd3SDaniel Verkamp null_init(void)
12a9c37fd3SDaniel Verkamp {
13a9c37fd3SDaniel Verkamp return 0;
14a9c37fd3SDaniel Verkamp }
15a9c37fd3SDaniel Verkamp
16a9c37fd3SDaniel Verkamp static int
null_clean(void)17a9c37fd3SDaniel Verkamp null_clean(void)
18a9c37fd3SDaniel Verkamp {
19a9c37fd3SDaniel Verkamp return 0;
20a9c37fd3SDaniel Verkamp }
21a9c37fd3SDaniel Verkamp
22a9c37fd3SDaniel Verkamp static void
scsi_nvme_translate_test(void)23a9c37fd3SDaniel Verkamp scsi_nvme_translate_test(void)
24a9c37fd3SDaniel Verkamp {
25a9c37fd3SDaniel Verkamp struct spdk_bdev_io bdev_io;
26a9c37fd3SDaniel Verkamp int sc, sk, asc, ascq;
27a9c37fd3SDaniel Verkamp
28a9c37fd3SDaniel Verkamp /* SPDK_NVME_SCT_GENERIC */
29816c34cbSSeth Howell bdev_io.internal.error.nvme.sct = SPDK_NVME_SCT_GENERIC;
309de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_SUCCESS;
319de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
329de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_GOOD);
339de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_NO_SENSE);
349de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
359de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
369de5068cSKanKuo
379de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_INVALID_OPCODE;
389de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
399de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
409de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
419de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_INVALID_COMMAND_OPERATION_CODE);
429de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
439de5068cSKanKuo
449de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_INVALID_FIELD;
459de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
469de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
479de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
489de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_INVALID_FIELD_IN_CDB);
499de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
509de5068cSKanKuo
519de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_DATA_TRANSFER_ERROR;
529de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
539de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
549de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_MEDIUM_ERROR);
559de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
569de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
579de5068cSKanKuo
58816c34cbSSeth Howell bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_ABORTED_POWER_LOSS;
59a9c37fd3SDaniel Verkamp spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
60a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_TASK_ABORTED);
61a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ABORTED_COMMAND);
62a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_WARNING);
63a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_POWER_LOSS_EXPECTED);
64a9c37fd3SDaniel Verkamp
659de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
669de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
679de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
689de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_HARDWARE_ERROR);
699de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_INTERNAL_TARGET_FAILURE);
709de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
719de5068cSKanKuo
729de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_ABORTED_BY_REQUEST;
739de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
749de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_TASK_ABORTED);
759de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ABORTED_COMMAND);
769de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
779de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
789de5068cSKanKuo
799de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_INVALID_NAMESPACE_OR_FORMAT;
809de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
819de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
829de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
839de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_ACCESS_DENIED);
849de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_INVALID_LU_IDENTIFIER);
859de5068cSKanKuo
869de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_LBA_OUT_OF_RANGE;
879de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
889de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
899de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
909de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE);
919de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
929de5068cSKanKuo
939de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_NAMESPACE_NOT_READY;
949de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
959de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
969de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_NOT_READY);
979de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_LOGICAL_UNIT_NOT_READY);
989de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
999de5068cSKanKuo
1009de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_RESERVATION_CONFLICT;
1019de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1029de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_RESERVATION_CONFLICT);
1039de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_NO_SENSE);
1049de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
1059de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
1069de5068cSKanKuo
107816c34cbSSeth Howell bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_INVALID_NUM_SGL_DESCIRPTORS;
108a9c37fd3SDaniel Verkamp spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
109a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
110a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
111a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
112a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
113a9c37fd3SDaniel Verkamp
114a9c37fd3SDaniel Verkamp /* SPDK_NVME_SCT_COMMAND_SPECIFIC */
115816c34cbSSeth Howell bdev_io.internal.error.nvme.sct = SPDK_NVME_SCT_COMMAND_SPECIFIC;
1169de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_COMPLETION_QUEUE_INVALID;
1179de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1189de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1199de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
1209de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
1219de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
1229de5068cSKanKuo
123816c34cbSSeth Howell bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_INVALID_FORMAT;
124a9c37fd3SDaniel Verkamp spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
125a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
126a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
127a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_FORMAT_COMMAND_FAILED);
128a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_FORMAT_COMMAND_FAILED);
129a9c37fd3SDaniel Verkamp
1309de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_CONFLICTING_ATTRIBUTES;
1319de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1329de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1339de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
1349de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_INVALID_FIELD_IN_CDB);
1359de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
1369de5068cSKanKuo
1379de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_ATTEMPTED_WRITE_TO_RO_RANGE;
1389de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1399de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1409de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_DATA_PROTECT);
1419de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_WRITE_PROTECTED);
1429de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
1439de5068cSKanKuo
144816c34cbSSeth Howell bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_OVERLAPPING_RANGE;
145a9c37fd3SDaniel Verkamp spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
146a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
147a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
148a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
149a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
150a9c37fd3SDaniel Verkamp
151a9c37fd3SDaniel Verkamp /* SPDK_NVME_SCT_MEDIA_ERROR */
152816c34cbSSeth Howell bdev_io.internal.error.nvme.sct = SPDK_NVME_SCT_MEDIA_ERROR;
1539de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_WRITE_FAULTS;
1549de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1559de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1569de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_MEDIUM_ERROR);
1579de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_PERIPHERAL_DEVICE_WRITE_FAULT);
1589de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
1599de5068cSKanKuo
1609de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_UNRECOVERED_READ_ERROR;
1619de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1629de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1639de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_MEDIUM_ERROR);
1649de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_UNRECOVERED_READ_ERROR);
1659de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
1669de5068cSKanKuo
167816c34cbSSeth Howell bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_GUARD_CHECK_ERROR;
168a9c37fd3SDaniel Verkamp spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
169a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
170a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_MEDIUM_ERROR);
171a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_LOGICAL_BLOCK_GUARD_CHECK_FAILED);
172a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_LOGICAL_BLOCK_GUARD_CHECK_FAILED);
173a9c37fd3SDaniel Verkamp
1749de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_APPLICATION_TAG_CHECK_ERROR;
1759de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1769de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1779de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_MEDIUM_ERROR);
1789de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED);
1799de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED);
1809de5068cSKanKuo
1819de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_REFERENCE_TAG_CHECK_ERROR;
1829de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1839de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1849de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_MEDIUM_ERROR);
1859de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED);
1869de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED);
1879de5068cSKanKuo
1889de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_COMPARE_FAILURE;
1899de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1909de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1919de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_MISCOMPARE);
1929de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_MISCOMPARE_DURING_VERIFY_OPERATION);
1939de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
1949de5068cSKanKuo
1959de5068cSKanKuo bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_ACCESS_DENIED;
1969de5068cSKanKuo spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
1979de5068cSKanKuo CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
1989de5068cSKanKuo CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_DATA_PROTECT);
1999de5068cSKanKuo CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_ACCESS_DENIED);
2009de5068cSKanKuo CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_NO_ACCESS_RIGHTS);
2019de5068cSKanKuo
202816c34cbSSeth Howell bdev_io.internal.error.nvme.sc = SPDK_NVME_SC_DEALLOCATED_OR_UNWRITTEN_BLOCK;
203a9c37fd3SDaniel Verkamp spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
204a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
205a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
206a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
207a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
208a9c37fd3SDaniel Verkamp
209a9c37fd3SDaniel Verkamp /* SPDK_NVME_SCT_VENDOR_SPECIFIC */
210816c34cbSSeth Howell bdev_io.internal.error.nvme.sct = SPDK_NVME_SCT_VENDOR_SPECIFIC;
211816c34cbSSeth Howell bdev_io.internal.error.nvme.sc = 0xff;
212a9c37fd3SDaniel Verkamp spdk_scsi_nvme_translate(&bdev_io, &sc, &sk, &asc, &ascq);
213a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sc, SPDK_SCSI_STATUS_CHECK_CONDITION);
214a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(sk, SPDK_SCSI_SENSE_ILLEGAL_REQUEST);
215a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(asc, SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
216a9c37fd3SDaniel Verkamp CU_ASSERT_EQUAL(ascq, SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
217a9c37fd3SDaniel Verkamp }
218a9c37fd3SDaniel Verkamp
219a9c37fd3SDaniel Verkamp int
main(int argc,char ** argv)220a9c37fd3SDaniel Verkamp main(int argc, char **argv)
221a9c37fd3SDaniel Verkamp {
222a9c37fd3SDaniel Verkamp CU_pSuite suite = NULL;
223a9c37fd3SDaniel Verkamp unsigned int num_failures;
224a9c37fd3SDaniel Verkamp
22578b696bcSVitaliy Mysak CU_initialize_registry();
226a9c37fd3SDaniel Verkamp
227a9c37fd3SDaniel Verkamp suite = CU_add_suite("scsi_nvme_suite", null_init, null_clean);
228a9c37fd3SDaniel Verkamp
229dcf0ca15SVitaliy Mysak CU_ADD_TEST(suite, scsi_nvme_translate_test);
230a9c37fd3SDaniel Verkamp
231*ea941caeSKonrad Sztyber num_failures = spdk_ut_run_tests(argc, argv, NULL);
232a9c37fd3SDaniel Verkamp CU_cleanup_registry();
233a9c37fd3SDaniel Verkamp return num_failures;
234a9c37fd3SDaniel Verkamp }
235