diff --git a/include/spdk/scsi.h b/include/spdk/scsi.h index 93068f5c7..482965800 100644 --- a/include/spdk/scsi.h +++ b/include/spdk/scsi.h @@ -472,6 +472,13 @@ void spdk_scsi_task_copy_status(struct spdk_scsi_task *dst, struct spdk_scsi_tas */ void spdk_scsi_task_process_null_lun(struct spdk_scsi_task *task); +/** + * Process the aborted SCSI task. + * + * \param task SCSI task. + */ +void spdk_scsi_task_process_abort(struct spdk_scsi_task *task); + /** * Open a logical unit for I/O operations. * diff --git a/lib/scsi/lun.c b/lib/scsi/lun.c index f753f5a7d..c15eabd26 100644 --- a/lib/scsi/lun.c +++ b/lib/scsi/lun.c @@ -171,10 +171,7 @@ _spdk_scsi_lun_execute_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *ta if (!lun->removed) { rc = spdk_bdev_scsi_execute(task); } else { - spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, - SPDK_SCSI_SENSE_ABORTED_COMMAND, - SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE, - SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + spdk_scsi_task_process_abort(task); rc = SPDK_SCSI_TASK_COMPLETE; } diff --git a/lib/scsi/task.c b/lib/scsi/task.c index d4974a383..ed9655968 100644 --- a/lib/scsi/task.c +++ b/lib/scsi/task.c @@ -291,3 +291,12 @@ spdk_scsi_task_process_null_lun(struct spdk_scsi_task *task) task->data_transferred = 0; } } + +void +spdk_scsi_task_process_abort(struct spdk_scsi_task *task) +{ + spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, + SPDK_SCSI_SENSE_ABORTED_COMMAND, + SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE, + SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE); +}