[SCSI] Merge scsi-misc-2.6 into scsi-rc-fixes-2.6
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
@@ -39,6 +39,8 @@
|
||||
#include "scsi_logging.h"
|
||||
#include "scsi_transport_api.h"
|
||||
|
||||
#include <trace/events/scsi.h>
|
||||
|
||||
#define SENSE_TIMEOUT (10*HZ)
|
||||
|
||||
/*
|
||||
@@ -52,6 +54,7 @@
|
||||
void scsi_eh_wakeup(struct Scsi_Host *shost)
|
||||
{
|
||||
if (shost->host_busy == shost->host_failed) {
|
||||
trace_scsi_eh_wakeup(shost);
|
||||
wake_up_process(shost->ehandler);
|
||||
SCSI_LOG_ERROR_RECOVERY(5,
|
||||
printk("Waking error handler thread\n"));
|
||||
@@ -127,6 +130,7 @@ enum blk_eh_timer_return scsi_times_out(struct request *req)
|
||||
struct scsi_cmnd *scmd = req->special;
|
||||
enum blk_eh_timer_return rtn = BLK_EH_NOT_HANDLED;
|
||||
|
||||
trace_scsi_dispatch_cmd_timeout(scmd);
|
||||
scsi_log_completion(scmd, TIMEOUT_ERROR);
|
||||
|
||||
if (scmd->device->host->transportt->eh_timed_out)
|
||||
@@ -970,9 +974,10 @@ static int scsi_eh_abort_cmds(struct list_head *work_q,
|
||||
"0x%p\n", current->comm,
|
||||
scmd));
|
||||
rtn = scsi_try_to_abort_cmd(scmd);
|
||||
if (rtn == SUCCESS) {
|
||||
if (rtn == SUCCESS || rtn == FAST_IO_FAIL) {
|
||||
scmd->eh_eflags &= ~SCSI_EH_CANCEL_CMD;
|
||||
if (!scsi_device_online(scmd->device) ||
|
||||
rtn == FAST_IO_FAIL ||
|
||||
!scsi_eh_tur(scmd)) {
|
||||
scsi_eh_finish_cmd(scmd, done_q);
|
||||
}
|
||||
@@ -1099,8 +1104,9 @@ static int scsi_eh_bus_device_reset(struct Scsi_Host *shost,
|
||||
" 0x%p\n", current->comm,
|
||||
sdev));
|
||||
rtn = scsi_try_bus_device_reset(bdr_scmd);
|
||||
if (rtn == SUCCESS) {
|
||||
if (rtn == SUCCESS || rtn == FAST_IO_FAIL) {
|
||||
if (!scsi_device_online(sdev) ||
|
||||
rtn == FAST_IO_FAIL ||
|
||||
!scsi_eh_tur(bdr_scmd)) {
|
||||
list_for_each_entry_safe(scmd, next,
|
||||
work_q, eh_entry) {
|
||||
@@ -1163,10 +1169,11 @@ static int scsi_eh_target_reset(struct Scsi_Host *shost,
|
||||
"to target %d\n",
|
||||
current->comm, id));
|
||||
rtn = scsi_try_target_reset(tgtr_scmd);
|
||||
if (rtn == SUCCESS) {
|
||||
if (rtn == SUCCESS || rtn == FAST_IO_FAIL) {
|
||||
list_for_each_entry_safe(scmd, next, work_q, eh_entry) {
|
||||
if (id == scmd_id(scmd))
|
||||
if (!scsi_device_online(scmd->device) ||
|
||||
rtn == FAST_IO_FAIL ||
|
||||
!scsi_eh_tur(tgtr_scmd))
|
||||
scsi_eh_finish_cmd(scmd,
|
||||
done_q);
|
||||
@@ -1222,10 +1229,11 @@ static int scsi_eh_bus_reset(struct Scsi_Host *shost,
|
||||
" %d\n", current->comm,
|
||||
channel));
|
||||
rtn = scsi_try_bus_reset(chan_scmd);
|
||||
if (rtn == SUCCESS) {
|
||||
if (rtn == SUCCESS || rtn == FAST_IO_FAIL) {
|
||||
list_for_each_entry_safe(scmd, next, work_q, eh_entry) {
|
||||
if (channel == scmd_channel(scmd))
|
||||
if (!scsi_device_online(scmd->device) ||
|
||||
rtn == FAST_IO_FAIL ||
|
||||
!scsi_eh_tur(scmd))
|
||||
scsi_eh_finish_cmd(scmd,
|
||||
done_q);
|
||||
@@ -1259,9 +1267,10 @@ static int scsi_eh_host_reset(struct list_head *work_q,
|
||||
, current->comm));
|
||||
|
||||
rtn = scsi_try_host_reset(scmd);
|
||||
if (rtn == SUCCESS) {
|
||||
if (rtn == SUCCESS || rtn == FAST_IO_FAIL) {
|
||||
list_for_each_entry_safe(scmd, next, work_q, eh_entry) {
|
||||
if (!scsi_device_online(scmd->device) ||
|
||||
rtn == FAST_IO_FAIL ||
|
||||
(!scsi_eh_try_stu(scmd) && !scsi_eh_tur(scmd)) ||
|
||||
!scsi_eh_tur(scmd))
|
||||
scsi_eh_finish_cmd(scmd, done_q);
|
||||
|
Reference in New Issue
Block a user