Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 214
b: refs/heads/master
c: f59114b
h: refs/heads/master
v: v3
  • Loading branch information
unknown authored and James Bottomley committed Apr 18, 2005
1 parent 397e2dd commit f80dc37
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 06f81ea8ca09b880cadf101d7e23b500e9c164bc
refs/heads/master: f59114b7b5dc677bbd7cc7e26a5fcb3572a3445c
25 changes: 13 additions & 12 deletions trunk/drivers/scsi/scsi_error.c
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,8 @@ static void scsi_eh_done(struct scsi_cmnd *scmd)
**/
static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, int timeout)
{
struct Scsi_Host *host = scmd->device->host;
struct scsi_device *sdev = scmd->device;
struct Scsi_Host *shost = sdev->host;
DECLARE_MUTEX_LOCKED(sem);
unsigned long flags;
int rtn = SUCCESS;
Expand All @@ -487,27 +488,27 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, int timeout)
*/
scmd->owner = SCSI_OWNER_LOWLEVEL;

if (scmd->device->scsi_level <= SCSI_2)
if (sdev->scsi_level <= SCSI_2)
scmd->cmnd[1] = (scmd->cmnd[1] & 0x1f) |
(scmd->device->lun << 5 & 0xe0);
(sdev->lun << 5 & 0xe0);

scsi_add_timer(scmd, timeout, scsi_eh_times_out);

/*
* set up the semaphore so we wait for the command to complete.
*/
scmd->device->host->eh_action = &sem;
shost->eh_action = &sem;
scmd->request->rq_status = RQ_SCSI_BUSY;

spin_lock_irqsave(scmd->device->host->host_lock, flags);
spin_lock_irqsave(shost->host_lock, flags);
scsi_log_send(scmd);
host->hostt->queuecommand(scmd, scsi_eh_done);
spin_unlock_irqrestore(scmd->device->host->host_lock, flags);
shost->hostt->queuecommand(scmd, scsi_eh_done);
spin_unlock_irqrestore(shost->host_lock, flags);

down(&sem);
scsi_log_completion(scmd, SUCCESS);

scmd->device->host->eh_action = NULL;
shost->eh_action = NULL;

/*
* see if timeout. if so, tell the host to forget about it.
Expand All @@ -527,10 +528,10 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, int timeout)
* abort a timed out command or not. not sure how
* we should treat them differently anyways.
*/
spin_lock_irqsave(scmd->device->host->host_lock, flags);
if (scmd->device->host->hostt->eh_abort_handler)
scmd->device->host->hostt->eh_abort_handler(scmd);
spin_unlock_irqrestore(scmd->device->host->host_lock, flags);
spin_lock_irqsave(shost->host_lock, flags);
if (shost->hostt->eh_abort_handler)
shost->hostt->eh_abort_handler(scmd);
spin_unlock_irqrestore(shost->host_lock, flags);

scmd->request->rq_status = RQ_SCSI_DONE;
scmd->owner = SCSI_OWNER_ERROR_HANDLER;
Expand Down

0 comments on commit f80dc37

Please sign in to comment.