Fix for the wrong mcmd state assignment if scst_mgmt_translate_lun() returns >0 because of suspending. Found by Gilad / <gilad.public2@gmail.com>

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1300 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2009-10-29 19:18:09 +00:00
parent eb46362a7b
commit 031ea81359

View File

@@ -4398,8 +4398,6 @@ static int scst_mgmt_cmd_init(struct scst_mgmt_cmd *mcmd)
TRACE_ENTRY();
mcmd->state = SCST_MCMD_STATE_READY;
switch (mcmd->fn) {
case SCST_ABORT_TASK:
{
@@ -4454,6 +4452,7 @@ static int scst_mgmt_cmd_init(struct scst_mgmt_cmd *mcmd)
case SCST_NEXUS_LOSS:
case SCST_ABORT_ALL_TASKS:
case SCST_UNREG_SESS_TM:
mcmd->state = SCST_MCMD_STATE_READY;
break;
case SCST_ABORT_TASK_SET:
@@ -4461,12 +4460,14 @@ static int scst_mgmt_cmd_init(struct scst_mgmt_cmd *mcmd)
case SCST_CLEAR_TASK_SET:
case SCST_LUN_RESET:
rc = scst_mgmt_translate_lun(mcmd);
if (rc < 0) {
if (rc == 0)
mcmd->state = SCST_MCMD_STATE_READY;
else if (rc < 0) {
PRINT_ERROR("Corresponding device for LUN %lld not "
"found", (long long unsigned int)mcmd->lun);
mcmd->status = SCST_MGMT_STATUS_LUN_NOT_EXIST;
mcmd->state = SCST_MCMD_STATE_DONE;
} else if (rc != 0)
} else
res = rc;
break;