From ba1811556b3041dcd2029fbc80b4612f7a3fda09 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Tue, 4 Dec 2018 22:24:34 +0900 Subject: [PATCH] scsi: Add scsi_task_process_abort for aborted SCSI tasks. Subsequent patches will have to abort SCSI tasks in the iSCSI layer. But spdk_scsi_task_set_status() API is not public API. spdk_scsi_task_process_null_lun() is existing public API but LUN NOT SUPPORTED is not appropriate for those cases. Hence add an new public API spdk_scsi_task_process_abort(). Change-Id: I5b488e902ccd790ace2936b3e6ebfeb124fa429a Signed-off-by: Shuhei Matsumoto Reviewed-on: https://review.gerrithub.io/436080 Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- include/spdk/scsi.h | 7 +++++++ lib/scsi/lun.c | 5 +---- lib/scsi/task.c | 9 +++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) 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); +}