Commit ba181155 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Ben Walker
Browse files

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: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/436080


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 5a365f36
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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.
 *
+1 −4
Original line number Diff line number Diff line
@@ -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;
	}

+9 −0
Original line number Diff line number Diff line
@@ -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);
}