Commit 17e391dd authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen

scsi: target: Send unit attention condition even if the sense buffer is too small

Signed-off-by: default avatarBart Van Assche <bart.vanassche@wdc.com>
Reviewed-by: default avatarMike Christie <mchristi@redhat.com>
Cc: Mike Christie <mchristi@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 89a104ed
...@@ -64,7 +64,7 @@ struct kmem_cache *t10_alua_lba_map_cache; ...@@ -64,7 +64,7 @@ struct kmem_cache *t10_alua_lba_map_cache;
struct kmem_cache *t10_alua_lba_map_mem_cache; struct kmem_cache *t10_alua_lba_map_mem_cache;
static void transport_complete_task_attr(struct se_cmd *cmd); static void transport_complete_task_attr(struct se_cmd *cmd);
static int translate_sense_reason(struct se_cmd *cmd, sense_reason_t reason); static void translate_sense_reason(struct se_cmd *cmd, sense_reason_t reason);
static void transport_handle_queue_full(struct se_cmd *cmd, static void transport_handle_queue_full(struct se_cmd *cmd,
struct se_device *dev, int err, bool write_pending); struct se_device *dev, int err, bool write_pending);
static void target_complete_ok_work(struct work_struct *work); static void target_complete_ok_work(struct work_struct *work);
...@@ -3170,7 +3170,7 @@ static const struct sense_info sense_info_table[] = { ...@@ -3170,7 +3170,7 @@ static const struct sense_info sense_info_table[] = {
}, },
}; };
static int translate_sense_reason(struct se_cmd *cmd, sense_reason_t reason) static void translate_sense_reason(struct se_cmd *cmd, sense_reason_t reason)
{ {
const struct sense_info *si; const struct sense_info *si;
u8 *buffer = cmd->sense_buffer; u8 *buffer = cmd->sense_buffer;
...@@ -3201,11 +3201,9 @@ static int translate_sense_reason(struct se_cmd *cmd, sense_reason_t reason) ...@@ -3201,11 +3201,9 @@ static int translate_sense_reason(struct se_cmd *cmd, sense_reason_t reason)
cmd->scsi_sense_length = TRANSPORT_SENSE_BUFFER; cmd->scsi_sense_length = TRANSPORT_SENSE_BUFFER;
scsi_build_sense_buffer(desc_format, buffer, si->key, asc, ascq); scsi_build_sense_buffer(desc_format, buffer, si->key, asc, ascq);
if (si->add_sector_info) if (si->add_sector_info)
return scsi_set_sense_information(buffer, WARN_ON_ONCE(scsi_set_sense_information(buffer,
cmd->scsi_sense_length, cmd->scsi_sense_length,
cmd->bad_sector); cmd->bad_sector) < 0);
return 0;
} }
int int
...@@ -3222,13 +3220,8 @@ transport_send_check_condition_and_sense(struct se_cmd *cmd, ...@@ -3222,13 +3220,8 @@ transport_send_check_condition_and_sense(struct se_cmd *cmd,
cmd->se_cmd_flags |= SCF_SENT_CHECK_CONDITION; cmd->se_cmd_flags |= SCF_SENT_CHECK_CONDITION;
spin_unlock_irqrestore(&cmd->t_state_lock, flags); spin_unlock_irqrestore(&cmd->t_state_lock, flags);
if (!from_transport) { if (!from_transport)
int rc; translate_sense_reason(cmd, reason);
rc = translate_sense_reason(cmd, reason);
if (rc)
return rc;
}
trace_target_cmd_complete(cmd); trace_target_cmd_complete(cmd);
return cmd->se_tfo->queue_status(cmd); return cmd->se_tfo->queue_status(cmd);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment