diff --git a/lib/scsi/scsi_bdev.c b/lib/scsi/scsi_bdev.c index 52f82454a..f34c6bb8c 100644 --- a/lib/scsi/scsi_bdev.c +++ b/lib/scsi/scsi_bdev.c @@ -1327,8 +1327,6 @@ spdk_bdev_scsi_read(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc, } task->data_transferred = nbytes; - task->status = SPDK_SCSI_STATUS_GOOD; - return SPDK_SCSI_TASK_PENDING; } @@ -1379,7 +1377,6 @@ spdk_bdev_scsi_write(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc, (uint64_t)task->length, nbytes); task->data_transferred = task->length; - task->status = SPDK_SCSI_STATUS_GOOD; return SPDK_SCSI_TASK_PENDING; } @@ -1419,7 +1416,6 @@ spdk_bdev_scsi_sync(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc, return SPDK_SCSI_TASK_COMPLETE; } task->data_transferred = 0; - task->status = SPDK_SCSI_STATUS_GOOD; return SPDK_SCSI_TASK_PENDING; } @@ -1553,6 +1549,8 @@ spdk_bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc, int data_len; int rc; + assert(task->status == SPDK_SCSI_STATUS_GOOD); + ctx = calloc(1, sizeof(*ctx)); if (!ctx) { spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, @@ -1586,12 +1584,6 @@ spdk_bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc, return SPDK_SCSI_TASK_COMPLETE; } - /* Before we submit commands, set the status to success */ - spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_GOOD, - SPDK_SCSI_SENSE_NO_SENSE, - SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE, - SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE); - for (i = 0; i < desc_count; i++) { struct spdk_scsi_unmap_bdesc *desc; uint64_t offset_blocks; diff --git a/test/unit/lib/scsi/scsi_bdev.c/scsi_bdev_ut.c b/test/unit/lib/scsi/scsi_bdev.c/scsi_bdev_ut.c index d91a4c36a..792dd098e 100644 --- a/test/unit/lib/scsi/scsi_bdev.c/scsi_bdev_ut.c +++ b/test/unit/lib/scsi/scsi_bdev.c/scsi_bdev_ut.c @@ -678,9 +678,10 @@ lba_range_test(void) task.transfer_len = 1 * 512; rc = spdk_bdev_scsi_execute(&task); CU_ASSERT(rc == SPDK_SCSI_TASK_PENDING); - CU_ASSERT(task.status == SPDK_SCSI_STATUS_GOOD); + CU_ASSERT(task.status == 0xFF); SPDK_CU_ASSERT_FATAL(!TAILQ_EMPTY(&g_bdev_io_queue)); ut_bdev_io_flush(); + CU_ASSERT(task.status == SPDK_SCSI_STATUS_GOOD); CU_ASSERT(g_scsi_cb_called == 1); g_scsi_cb_called = 0; @@ -698,11 +699,13 @@ lba_range_test(void) to_be64(&cdb[2], 0); /* LBA */ to_be32(&cdb[10], 4); /* transfer length */ task.transfer_len = 4 * 512; + task.status = 0xFF; rc = spdk_bdev_scsi_execute(&task); CU_ASSERT(rc == SPDK_SCSI_TASK_PENDING); - CU_ASSERT(task.status == SPDK_SCSI_STATUS_GOOD); + CU_ASSERT(task.status == 0xFF); SPDK_CU_ASSERT_FATAL(!TAILQ_EMPTY(&g_bdev_io_queue)); ut_bdev_io_flush(); + CU_ASSERT(task.status == SPDK_SCSI_STATUS_GOOD); CU_ASSERT(g_scsi_cb_called == 1); g_scsi_cb_called = 0; @@ -746,9 +749,10 @@ xfer_len_test(void) task.transfer_len = 1 * 512; rc = spdk_bdev_scsi_execute(&task); CU_ASSERT(rc == SPDK_SCSI_TASK_PENDING); - CU_ASSERT(task.status == SPDK_SCSI_STATUS_GOOD); + CU_ASSERT(task.status == 0xFF); SPDK_CU_ASSERT_FATAL(!TAILQ_EMPTY(&g_bdev_io_queue)); ut_bdev_io_flush(); + CU_ASSERT(task.status == SPDK_SCSI_STATUS_GOOD); CU_ASSERT(g_scsi_cb_called == 1); g_scsi_cb_called = 0; @@ -756,11 +760,13 @@ xfer_len_test(void) to_be64(&cdb[2], 0); /* LBA */ to_be32(&cdb[10], SPDK_WORK_BLOCK_SIZE / 512); /* transfer length */ task.transfer_len = SPDK_WORK_BLOCK_SIZE; + task.status = 0xFF; rc = spdk_bdev_scsi_execute(&task); CU_ASSERT(rc == SPDK_SCSI_TASK_PENDING); - CU_ASSERT(task.status == SPDK_SCSI_STATUS_GOOD); + CU_ASSERT(task.status == 0xFF); SPDK_CU_ASSERT_FATAL(!TAILQ_EMPTY(&g_bdev_io_queue)); ut_bdev_io_flush(); + CU_ASSERT(task.status == SPDK_SCSI_STATUS_GOOD); CU_ASSERT(g_scsi_cb_called == 1); g_scsi_cb_called = 0;