git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
drivers
/
scsi
/
scsi_error.c
diff --git
a/drivers/scsi/scsi_error.c
b/drivers/scsi/scsi_error.c
index
1c75646
..
ff82ccf
100644
(file)
--- a/
drivers/scsi/scsi_error.c
+++ b/
drivers/scsi/scsi_error.c
@@
-29,7
+29,6
@@
#include <scsi/scsi_dbg.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_eh.h>
#include <scsi/scsi_dbg.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_eh.h>
-#include <scsi/scsi_transport.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_ioctl.h>
#include <scsi/scsi_request.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_ioctl.h>
#include <scsi/scsi_request.h>
@@
-164,12
+163,16
@@
void scsi_times_out(struct scsi_cmnd *scmd)
{
scsi_log_completion(scmd, TIMEOUT_ERROR);
{
scsi_log_completion(scmd, TIMEOUT_ERROR);
- if (scmd->device->host->
transpor
tt->eh_timed_out)
- switch (scmd->device->host->
transpor
tt->eh_timed_out(scmd)) {
+ if (scmd->device->host->
hos
tt->eh_timed_out)
+ switch (scmd->device->host->
hos
tt->eh_timed_out(scmd)) {
case EH_HANDLED:
__scsi_done(scmd);
return;
case EH_RESET_TIMER:
case EH_HANDLED:
__scsi_done(scmd);
return;
case EH_RESET_TIMER:
+ /* This allows a single retry even of a command
+ * with allowed == 0 */
+ if (scmd->retries++ > scmd->allowed)
+ break;
scsi_add_timer(scmd, scmd->timeout_per_command,
scsi_times_out);
return;
scsi_add_timer(scmd, scmd->timeout_per_command,
scsi_times_out);
return;
@@
-581,7
+584,8
@@
static int scsi_request_sense(struct scsi_cmnd *scmd)
* keep a list of pending commands for final completion, and once we
* are ready to leave error handling we handle completion for real.
**/
* keep a list of pending commands for final completion, and once we
* are ready to leave error handling we handle completion for real.
**/
-void scsi_eh_finish_cmd(struct scsi_cmnd *scmd, struct list_head *done_q)
+static void scsi_eh_finish_cmd(struct scsi_cmnd *scmd,
+ struct list_head *done_q)
{
scmd->device->host->host_failed--;
scmd->eh_eflags = 0;
{
scmd->device->host->host_failed--;
scmd->eh_eflags = 0;
@@
-593,7
+597,6
@@
void scsi_eh_finish_cmd(struct scsi_cmnd *scmd, struct list_head *done_q)
scsi_setup_cmd_retry(scmd);
list_move_tail(&scmd->eh_entry, done_q);
}
scsi_setup_cmd_retry(scmd);
list_move_tail(&scmd->eh_entry, done_q);
}
-EXPORT_SYMBOL(scsi_eh_finish_cmd);
/**
* scsi_eh_get_sense - Get device sense data.
/**
* scsi_eh_get_sense - Get device sense data.
@@
-1422,7
+1425,7
@@
static void scsi_eh_ready_devs(struct Scsi_Host *shost,
* @done_q: list_head of processed commands.
*
**/
* @done_q: list_head of processed commands.
*
**/
-void scsi_eh_flush_done_q(struct list_head *done_q)
+
static
void scsi_eh_flush_done_q(struct list_head *done_q)
{
struct scsi_cmnd *scmd, *next;
{
struct scsi_cmnd *scmd, *next;
@@
-1451,7
+1454,6
@@
void scsi_eh_flush_done_q(struct list_head *done_q)
}
}
}
}
}
}
-EXPORT_SYMBOL(scsi_eh_flush_done_q);
/**
* scsi_unjam_host - Attempt to fix a host which has a cmd that failed.
/**
* scsi_unjam_host - Attempt to fix a host which has a cmd that failed.
@@
-1537,8
+1539,8
@@
int scsi_error_handler(void *data)
* what we need to do to get it up and online again (if we can).
* If we fail, we end up taking the thing offline.
*/
* what we need to do to get it up and online again (if we can).
* If we fail, we end up taking the thing offline.
*/
- if (shost->
transportt->eh_strategy_handler)
- shost->
transpor
tt->eh_strategy_handler(shost);
+ if (shost->
hostt->eh_strategy_handler)
+ shost->
hos
tt->eh_strategy_handler(shost);
else
scsi_unjam_host(shost);
else
scsi_unjam_host(shost);