target: return SAM_STAT_TASK_SET_FULL for TCM_OUT_OF_RESOURCES
TCM_OUT_OF_RESOURCES is getting translated to TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE which seems like a heavy error when we just cannot allocate a resource that may be allocatable later. This has us translate TCM_OUT_OF_RESOURCES to SAM_STAT_TASK_SET_FULL instead. Signed-off-by: Mike Christie <mchristi@redhat.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
55435badda
commit
a271eac46a
@ -1772,8 +1772,8 @@ void transport_generic_request_failure(struct se_cmd *cmd,
|
|||||||
case TCM_UNSUPPORTED_SEGMENT_DESC_TYPE_CODE:
|
case TCM_UNSUPPORTED_SEGMENT_DESC_TYPE_CODE:
|
||||||
break;
|
break;
|
||||||
case TCM_OUT_OF_RESOURCES:
|
case TCM_OUT_OF_RESOURCES:
|
||||||
sense_reason = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
|
cmd->scsi_status = SAM_STAT_TASK_SET_FULL;
|
||||||
break;
|
goto queue_status;
|
||||||
case TCM_RESERVATION_CONFLICT:
|
case TCM_RESERVATION_CONFLICT:
|
||||||
/*
|
/*
|
||||||
* No SENSE Data payload for this case, set SCSI Status
|
* No SENSE Data payload for this case, set SCSI Status
|
||||||
@ -1795,11 +1795,8 @@ void transport_generic_request_failure(struct se_cmd *cmd,
|
|||||||
cmd->orig_fe_lun, 0x2C,
|
cmd->orig_fe_lun, 0x2C,
|
||||||
ASCQ_2CH_PREVIOUS_RESERVATION_CONFLICT_STATUS);
|
ASCQ_2CH_PREVIOUS_RESERVATION_CONFLICT_STATUS);
|
||||||
}
|
}
|
||||||
trace_target_cmd_complete(cmd);
|
|
||||||
ret = cmd->se_tfo->queue_status(cmd);
|
goto queue_status;
|
||||||
if (ret)
|
|
||||||
goto queue_full;
|
|
||||||
goto check_stop;
|
|
||||||
default:
|
default:
|
||||||
pr_err("Unknown transport error for CDB 0x%02x: %d\n",
|
pr_err("Unknown transport error for CDB 0x%02x: %d\n",
|
||||||
cmd->t_task_cdb[0], sense_reason);
|
cmd->t_task_cdb[0], sense_reason);
|
||||||
@ -1816,6 +1813,11 @@ check_stop:
|
|||||||
transport_cmd_check_stop_to_fabric(cmd);
|
transport_cmd_check_stop_to_fabric(cmd);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
queue_status:
|
||||||
|
trace_target_cmd_complete(cmd);
|
||||||
|
ret = cmd->se_tfo->queue_status(cmd);
|
||||||
|
if (!ret)
|
||||||
|
goto check_stop;
|
||||||
queue_full:
|
queue_full:
|
||||||
transport_handle_queue_full(cmd, cmd->se_dev, ret, false);
|
transport_handle_queue_full(cmd, cmd->se_dev, ret, false);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user