提交 3969251b 编写于 作者: S scameron@beardog.cca.cpqcorp.net 提交者: Jens Axboe

cciss: decode unit attention in SCSI error handling code

Make SCSI reset error handler decode unit attention ASC
and after a target reset wait for a unit attention that indicates
a reset occurred rather than just for any old unit attention.
Signed-off-by: NStephen M. Cameron <scameron@beardog.cca.cpqcorp.net>
Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
上级 72f9f132
...@@ -1604,16 +1604,25 @@ static int wait_for_device_to_become_ready(ctlr_info_t *h, ...@@ -1604,16 +1604,25 @@ static int wait_for_device_to_become_ready(ctlr_info_t *h,
(void) process_sendcmd_error(h, c); (void) process_sendcmd_error(h, c);
if (rc == 0 && c->err_info->CommandStatus == CMD_SUCCESS) if (rc != 0)
break; goto retry_tur;
if (rc == 0 && if (c->err_info->CommandStatus == CMD_SUCCESS)
c->err_info->CommandStatus == CMD_TARGET_STATUS &&
c->err_info->ScsiStatus == SAM_STAT_CHECK_CONDITION &&
(c->err_info->SenseInfo[2] == NO_SENSE ||
c->err_info->SenseInfo[2] == UNIT_ATTENTION))
break; break;
if (c->err_info->CommandStatus == CMD_TARGET_STATUS &&
c->err_info->ScsiStatus == SAM_STAT_CHECK_CONDITION) {
if (c->err_info->SenseInfo[2] == NO_SENSE)
break;
if (c->err_info->SenseInfo[2] == UNIT_ATTENTION) {
unsigned char asc;
asc = c->err_info->SenseInfo[12];
check_for_unit_attention(h, c);
if (asc == POWER_OR_RESET)
break;
}
}
retry_tur:
printk(KERN_WARNING "cciss%d: Waiting %d secs " printk(KERN_WARNING "cciss%d: Waiting %d secs "
"for device to become ready.\n", "for device to become ready.\n",
h->ctlr, waittime / HZ); h->ctlr, waittime / HZ);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册