diff options
author | Anil Ravindranath <anil_ravindranath@pmc-sierra.com> | 2009-12-17 14:51:53 -0800 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-30 11:53:22 -0600 |
commit | a70757ba9a3719f99760713c3b72134b21016c6e (patch) | |
tree | 51d8d3b0bc0376d4b74dc4ef3b83952286d05f00 /drivers/scsi/pmcraid.c | |
parent | 3b9c212a5cbb1e13ced92639ce83f7a48b8b2331 (diff) |
[SCSI] pmcraid: fix to avoid twice scsi_dma_unmap for a command
For a particular driver error condition, driver was doing double
scsi_dma_unmaps. Driver was calling scsi_dma_unmap in
pmcraid_error_handler and return 0. This pmcraid_error_handler is called
by pmcraid_io_done which will do scsi_dma_unmap again when it has
return 0 from pmcraid_error_handler.
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/pmcraid.c')
-rw-r--r-- | drivers/scsi/pmcraid.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index e7d2688fbeb..b6f1ef954af 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c @@ -2483,14 +2483,12 @@ static int pmcraid_error_handler(struct pmcraid_cmd *cmd) sense_copied = 1; } - if (RES_IS_GSCSI(res->cfg_entry)) { + if (RES_IS_GSCSI(res->cfg_entry)) pmcraid_cancel_all(cmd, sense_copied); - } else if (sense_copied) { + else if (sense_copied) pmcraid_erp_done(cmd); - return 0; - } else { + else pmcraid_request_sense(cmd); - } return 1; |