mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-19 19:51:27 +00:00
Minor fixes and cleanups
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@862 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -1224,6 +1224,7 @@ void scst_nexus_loss(struct scst_tgt_dev *tgt_dev, bool queue_UA)
|
||||
/* With activity suspended the lock isn't needed, but let's be safe */
|
||||
spin_lock_bh(&tgt_dev->tgt_dev_lock);
|
||||
scst_free_all_UA(tgt_dev);
|
||||
memset(tgt_dev->tgt_dev_sense, 0, sizeof(tgt_dev->tgt_dev_sense));
|
||||
spin_unlock_bh(&tgt_dev->tgt_dev_lock);
|
||||
|
||||
if (queue_UA) {
|
||||
@@ -3426,7 +3427,12 @@ void scst_process_reset(struct scst_device *dev,
|
||||
struct scst_session *sess = tgt_dev->sess;
|
||||
|
||||
spin_lock_bh(&tgt_dev->tgt_dev_lock);
|
||||
|
||||
scst_free_all_UA(tgt_dev);
|
||||
|
||||
memset(tgt_dev->tgt_dev_sense, 0,
|
||||
sizeof(tgt_dev->tgt_dev_sense));
|
||||
|
||||
spin_unlock_bh(&tgt_dev->tgt_dev_lock);
|
||||
|
||||
spin_lock_irq(&sess->sess_list_lock);
|
||||
@@ -4158,6 +4164,37 @@ out:
|
||||
return;
|
||||
}
|
||||
|
||||
void scst_store_sense(struct scst_cmd *cmd)
|
||||
{
|
||||
TRACE_ENTRY();
|
||||
|
||||
if (SCST_SENSE_VALID(cmd->sense) &&
|
||||
!test_bit(SCST_CMD_NO_RESP, &cmd->cmd_flags) &&
|
||||
(cmd->tgt_dev != NULL)) {
|
||||
struct scst_tgt_dev *tgt_dev = cmd->tgt_dev;
|
||||
|
||||
TRACE_DBG("Storing sense (cmd %p)", cmd);
|
||||
|
||||
spin_lock_bh(&tgt_dev->tgt_dev_lock);
|
||||
|
||||
if (cmd->sense_bufflen <= sizeof(tgt_dev->tgt_dev_sense))
|
||||
tgt_dev->tgt_dev_valid_sense_len = cmd->sense_bufflen;
|
||||
else {
|
||||
tgt_dev->tgt_dev_valid_sense_len = sizeof(tgt_dev->tgt_dev_sense);
|
||||
PRINT_ERROR("Stored sense truncated to size %d "
|
||||
"(needed %d)", tgt_dev->tgt_dev_valid_sense_len,
|
||||
cmd->sense_bufflen);
|
||||
}
|
||||
memcpy(tgt_dev->tgt_dev_sense, cmd->sense,
|
||||
tgt_dev->tgt_dev_valid_sense_len);
|
||||
|
||||
spin_unlock_bh(&tgt_dev->tgt_dev_lock);
|
||||
}
|
||||
|
||||
TRACE_EXIT();
|
||||
return;
|
||||
}
|
||||
|
||||
void scst_xmit_process_aborted_cmd(struct scst_cmd *cmd)
|
||||
{
|
||||
TRACE_ENTRY();
|
||||
|
||||
@@ -303,6 +303,8 @@ int scst_acg_remove_name(struct scst_acg *acg, const char *name);
|
||||
int scst_prepare_request_sense(struct scst_cmd *orig_cmd);
|
||||
int scst_finish_internal_cmd(struct scst_cmd *cmd);
|
||||
|
||||
void scst_store_sense(struct scst_cmd *cmd);
|
||||
|
||||
int scst_assign_dev_handler(struct scst_device *dev,
|
||||
struct scst_dev_type *handler);
|
||||
|
||||
|
||||
@@ -2922,29 +2922,8 @@ static int scst_pre_xmit_response(struct scst_cmd *cmd)
|
||||
|
||||
if (unlikely(test_bit(SCST_CMD_ABORTED, &cmd->cmd_flags)))
|
||||
scst_xmit_process_aborted_cmd(cmd);
|
||||
else if (unlikely(cmd->status == SAM_STAT_CHECK_CONDITION) &&
|
||||
SCST_SENSE_VALID(cmd->sense) &&
|
||||
!test_bit(SCST_CMD_NO_RESP, &cmd->cmd_flags) &&
|
||||
(cmd->tgt_dev != NULL)) {
|
||||
struct scst_tgt_dev *tgt_dev = cmd->tgt_dev;
|
||||
|
||||
TRACE_DBG("Storing sense (cmd %p)", cmd);
|
||||
|
||||
spin_lock_bh(&tgt_dev->tgt_dev_lock);
|
||||
|
||||
if (cmd->sense_bufflen <= sizeof(tgt_dev->tgt_dev_sense))
|
||||
tgt_dev->tgt_dev_valid_sense_len = cmd->sense_bufflen;
|
||||
else {
|
||||
tgt_dev->tgt_dev_valid_sense_len = sizeof(tgt_dev->tgt_dev_sense);
|
||||
PRINT_ERROR("Stored sense truncated to size %d "
|
||||
"(needed %d)", tgt_dev->tgt_dev_valid_sense_len,
|
||||
cmd->sense_bufflen);
|
||||
}
|
||||
memcpy(tgt_dev->tgt_dev_sense, cmd->sense,
|
||||
tgt_dev->tgt_dev_valid_sense_len);
|
||||
|
||||
spin_unlock_bh(&tgt_dev->tgt_dev_lock);
|
||||
}
|
||||
else if (unlikely(cmd->status == SAM_STAT_CHECK_CONDITION))
|
||||
scst_store_sense(cmd);
|
||||
|
||||
if (unlikely(test_bit(SCST_CMD_NO_RESP, &cmd->cmd_flags))) {
|
||||
TRACE_MGMT_DBG("Flag NO_RESP set for cmd %p (tag %llu),"
|
||||
|
||||
Reference in New Issue
Block a user