From 065319f996a4890a5a06d3af8d99d3d84bad076e Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 1 Jan 2013 10:15:56 -0800 Subject: [PATCH] SCSI Add support for STATUS_BUSY Add support for BUSY status coide from the target and just pass this back to the application as is (instead of converting it to _ERROR). This allows the application to trap task->status==SCSI_STATUS_BUSY and decide what/how to proceed. --- include/iscsi.h | 1 + lib/iscsi-command.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/iscsi.h b/include/iscsi.h index c9e6ded..f8f3a66 100644 --- a/include/iscsi.h +++ b/include/iscsi.h @@ -264,6 +264,7 @@ EXTERN int iscsi_is_logged_in(struct iscsi_context *iscsi); enum scsi_status { SCSI_STATUS_GOOD = 0, SCSI_STATUS_CHECK_CONDITION = 2, + SCSI_STATUS_BUSY = 8, SCSI_STATUS_RESERVATION_CONFLICT = 0x18, SCSI_STATUS_REDIRECT = 0x101, SCSI_STATUS_CANCELLED = 0x0f000000, diff --git a/lib/iscsi-command.c b/lib/iscsi-command.c index 06d7d66..b687511 100644 --- a/lib/iscsi-command.c +++ b/lib/iscsi-command.c @@ -40,6 +40,7 @@ iscsi_scsi_response_cb(struct iscsi_context *iscsi, int status, case SCSI_STATUS_RESERVATION_CONFLICT: case SCSI_STATUS_CHECK_CONDITION: case SCSI_STATUS_GOOD: + case SCSI_STATUS_BUSY: case SCSI_STATUS_ERROR: case SCSI_STATUS_CANCELLED: scsi_cbdata->callback(iscsi, status, scsi_cbdata->task, @@ -395,6 +396,11 @@ iscsi_process_scsi_reply(struct iscsi_context *iscsi, struct iscsi_pdu *pdu, pdu->callback(iscsi, SCSI_STATUS_RESERVATION_CONFLICT, task, pdu->private_data); break; + case SCSI_STATUS_BUSY: + iscsi_set_error(iscsi, "BUSY"); + pdu->callback(iscsi, SCSI_STATUS_BUSY, + task, pdu->private_data); + break; default: iscsi_set_error(iscsi, "Unknown SCSI status :%d.", status);