From 8c4a579cda2696cd62771949a1b8125b5afc6602 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 19 Dec 2014 08:33:21 -0800 Subject: [PATCH] SCSI: scsi_task_get_status add getter function for task status and sense Signed-off-by: Ronnie Sahlberg --- include/iscsi.h | 3 +++ lib/libiscsi.def | 1 + lib/libiscsi.syms | 1 + lib/scsi-lowlevel.c | 9 +++++++++ 4 files changed, 14 insertions(+) diff --git a/include/iscsi.h b/include/iscsi.h index d15de76..7a649ee 100644 --- a/include/iscsi.h +++ b/include/iscsi.h @@ -512,6 +512,7 @@ EXTERN int iscsi_nop_out_async(struct iscsi_context *iscsi, iscsi_command_cb cb, EXTERN int iscsi_get_nops_in_flight(struct iscsi_context *iscsi); struct scsi_task; +struct scsi_sense; enum iscsi_task_mgmt_funcs { ISCSI_TM_ABORT_TASK = 0x01, @@ -1127,6 +1128,8 @@ struct scsi_iovec; EXTERN void scsi_task_set_iov_out(struct scsi_task *task, struct scsi_iovec *iov, int niov); EXTERN void scsi_task_set_iov_in(struct scsi_task *task, struct scsi_iovec *iov, int niov); +EXTERN int scsi_task_get_status(struct scsi_task *task, struct scsi_sense *sense); + /* * This function is used when you want to cancel a scsi task. * The callback for the task will immediately be invoked with SCSI_STATUS_CANCELLED. diff --git a/lib/libiscsi.def b/lib/libiscsi.def index 60da14a..86448ab 100644 --- a/lib/libiscsi.def +++ b/lib/libiscsi.def @@ -223,6 +223,7 @@ scsi_set_uint32 scsi_set_uint64 scsi_task_add_data_in_buffer scsi_task_add_data_out_buffer +scsi_task_get_status scsi_task_set_iov_in scsi_task_set_iov_out scsi_version_to_str diff --git a/lib/libiscsi.syms b/lib/libiscsi.syms index 533cb71..98670e4 100644 --- a/lib/libiscsi.syms +++ b/lib/libiscsi.syms @@ -222,6 +222,7 @@ scsi_set_uint32 scsi_set_uint64 scsi_task_add_data_in_buffer scsi_task_add_data_out_buffer +scsi_task_get_status scsi_task_set_iov_in scsi_task_set_iov_out scsi_version_to_str diff --git a/lib/scsi-lowlevel.c b/lib/scsi-lowlevel.c index ae850f1..d404266 100644 --- a/lib/scsi-lowlevel.c +++ b/lib/scsi-lowlevel.c @@ -3857,3 +3857,12 @@ scsi_task_add_data_out_buffer(struct scsi_task *task, int len, unsigned char *bu { return scsi_iovector_add(task, &task->iovector_out, len, buf); } + +int +scsi_task_get_status(struct scsi_task *task, struct scsi_sense *sense) +{ + if (sense) { + memcpy(sense, &task->sense, sizeof(struct scsi_sense)); + } + return task->status; +}