diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-09-29 11:07:46 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-09-29 11:07:46 -0400 |
| commit | 0d0f3ef248e359b7363830fbd6df23897bbd1ceb (patch) | |
| tree | 6cc0ce31a3754c33443bfaf3d690074383cff7a2 | |
| parent | 17c0d2a1d5a562982f1f2177b8270fbfaa42508c (diff) | |
| parent | c9eeb248f3b44939532a9716bc06413383aa5d63 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
[SCSI] qlogicpti: fix sg list traversal error in continuation entries
[SCSI] Fix hang with split requests
[SCSI] qla2xxx: Defer enablement of RISC interrupts until ISP initialization completes.
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 1 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/scsi_lib.c | 3 |
3 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 45a3b93eed57..bf41887cdd65 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
| @@ -1834,7 +1834,6 @@ clear_risc_ints: | |||
| 1834 | WRT_REG_WORD(®->isp.hccr, HCCR_CLR_HOST_INT); | 1834 | WRT_REG_WORD(®->isp.hccr, HCCR_CLR_HOST_INT); |
| 1835 | } | 1835 | } |
| 1836 | spin_unlock_irq(&ha->hardware_lock); | 1836 | spin_unlock_irq(&ha->hardware_lock); |
| 1837 | ha->isp_ops->enable_intrs(ha); | ||
| 1838 | 1837 | ||
| 1839 | fail: | 1838 | fail: |
| 1840 | return ret; | 1839 | return ret; |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 26afe44265c7..6d0f0e5f2827 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
| @@ -1740,6 +1740,8 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 1740 | if (ret) | 1740 | if (ret) |
| 1741 | goto probe_failed; | 1741 | goto probe_failed; |
| 1742 | 1742 | ||
| 1743 | ha->isp_ops->enable_intrs(ha); | ||
| 1744 | |||
| 1743 | scsi_scan_host(host); | 1745 | scsi_scan_host(host); |
| 1744 | 1746 | ||
| 1745 | qla2x00_alloc_sysfs_attr(ha); | 1747 | qla2x00_alloc_sysfs_attr(ha); |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index ff5d56b3ee4d..62307bd794a9 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -852,7 +852,7 @@ static void scsi_end_bidi_request(struct scsi_cmnd *cmd) | |||
| 852 | void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) | 852 | void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) |
| 853 | { | 853 | { |
| 854 | int result = cmd->result; | 854 | int result = cmd->result; |
| 855 | int this_count = scsi_bufflen(cmd); | 855 | int this_count; |
| 856 | struct request_queue *q = cmd->device->request_queue; | 856 | struct request_queue *q = cmd->device->request_queue; |
| 857 | struct request *req = cmd->request; | 857 | struct request *req = cmd->request; |
| 858 | int error = 0; | 858 | int error = 0; |
| @@ -908,6 +908,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) | |||
| 908 | */ | 908 | */ |
| 909 | if (scsi_end_request(cmd, error, good_bytes, result == 0) == NULL) | 909 | if (scsi_end_request(cmd, error, good_bytes, result == 0) == NULL) |
| 910 | return; | 910 | return; |
| 911 | this_count = blk_rq_bytes(req); | ||
| 911 | 912 | ||
| 912 | /* good_bytes = 0, or (inclusive) there were leftovers and | 913 | /* good_bytes = 0, or (inclusive) there were leftovers and |
| 913 | * result = 0, so scsi_end_request couldn't retry. | 914 | * result = 0, so scsi_end_request couldn't retry. |
