Add RESERVATION CONFLICT
From Richard Sharpe, add support to handle when a target responds with RESERVATION CONFLICT to a scsi i/o
This commit is contained in:
+5
-4
@@ -214,10 +214,11 @@ int iscsi_is_logged_in(struct iscsi_context *iscsi);
|
|||||||
|
|
||||||
|
|
||||||
enum scsi_status {
|
enum scsi_status {
|
||||||
SCSI_STATUS_GOOD = 0,
|
SCSI_STATUS_GOOD = 0,
|
||||||
SCSI_STATUS_CHECK_CONDITION = 2,
|
SCSI_STATUS_CHECK_CONDITION = 2,
|
||||||
SCSI_STATUS_CANCELLED = 0x0f000000,
|
SCSI_STATUS_RESERVATION_CONFLICT = 0x18,
|
||||||
SCSI_STATUS_ERROR = 0x0f000001
|
SCSI_STATUS_CANCELLED = 0x0f000000,
|
||||||
|
SCSI_STATUS_ERROR = 0x0f000001
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+8
-5
@@ -52,12 +52,10 @@ iscsi_scsi_response_cb(struct iscsi_context *iscsi, int status,
|
|||||||
struct scsi_task *task = command_data;
|
struct scsi_task *task = command_data;
|
||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case SCSI_STATUS_GOOD:
|
case SCSI_STATUS_RESERVATION_CONFLICT:
|
||||||
scsi_cbdata->callback(iscsi, SCSI_STATUS_GOOD, task,
|
|
||||||
scsi_cbdata->private_data);
|
|
||||||
return;
|
|
||||||
case SCSI_STATUS_CHECK_CONDITION:
|
case SCSI_STATUS_CHECK_CONDITION:
|
||||||
scsi_cbdata->callback(iscsi, SCSI_STATUS_CHECK_CONDITION, task,
|
case SCSI_STATUS_GOOD:
|
||||||
|
scsi_cbdata->callback(iscsi, status, task,
|
||||||
scsi_cbdata->private_data);
|
scsi_cbdata->private_data);
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
@@ -397,6 +395,11 @@ iscsi_process_scsi_reply(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
|
|||||||
pdu->callback(iscsi, SCSI_STATUS_CHECK_CONDITION, task,
|
pdu->callback(iscsi, SCSI_STATUS_CHECK_CONDITION, task,
|
||||||
pdu->private_data);
|
pdu->private_data);
|
||||||
break;
|
break;
|
||||||
|
case SCSI_STATUS_RESERVATION_CONFLICT:
|
||||||
|
iscsi_set_error(iscsi, "RESERVATION CONFLICT");
|
||||||
|
pdu->callback(iscsi, SCSI_STATUS_RESERVATION_CONFLICT,
|
||||||
|
task, pdu->private_data);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
iscsi_set_error(iscsi, "Unknown SCSI status :%d.", status);
|
iscsi_set_error(iscsi, "Unknown SCSI status :%d.", status);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user