diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-15 19:51:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-15 19:51:54 -0400 |
commit | bc06cffdec85d487c77109dffcd2f285bdc502d3 (patch) | |
tree | adc6e6398243da87e66c56102840597a329183a0 /drivers/scsi/scsi.c | |
parent | d3502d7f25b22cfc9762bf1781faa9db1bb3be2e (diff) | |
parent | 9413d7b8aa777dd1fc7db9563ce5e80d769fe7b5 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (166 commits)
[SCSI] ibmvscsi: convert to use the data buffer accessors
[SCSI] dc395x: convert to use the data buffer accessors
[SCSI] ncr53c8xx: convert to use the data buffer accessors
[SCSI] sym53c8xx: convert to use the data buffer accessors
[SCSI] ppa: coding police and printk levels
[SCSI] aic7xxx_old: remove redundant GFP_ATOMIC from kmalloc
[SCSI] i2o: remove redundant GFP_ATOMIC from kmalloc from device.c
[SCSI] remove the dead CYBERSTORMIII_SCSI option
[SCSI] don't build scsi_dma_{map,unmap} for !HAS_DMA
[SCSI] Clean up scsi_add_lun a bit
[SCSI] 53c700: Remove printk, which triggers because of low scsi clock on SNI RMs
[SCSI] sni_53c710: Cleanup
[SCSI] qla4xxx: Fix underrun/overrun conditions
[SCSI] megaraid_mbox: use mutex instead of semaphore
[SCSI] aacraid: add 51245, 51645 and 52245 adapters to documentation.
[SCSI] qla2xxx: update version to 8.02.00-k1.
[SCSI] qla2xxx: add support for NPIV
[SCSI] stex: use resid for xfer len information
[SCSI] Add Brownie 1200U3P to blacklist
[SCSI] scsi.c: convert to use the data buffer accessors
...
Diffstat (limited to 'drivers/scsi/scsi.c')
-rw-r--r-- | drivers/scsi/scsi.c | 48 |
1 files changed, 1 insertions, 47 deletions
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 4c1e31334765..a691dda40d2c 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c | |||
@@ -368,7 +368,7 @@ void scsi_log_send(struct scsi_cmnd *cmd) | |||
368 | if (level > 3) { | 368 | if (level > 3) { |
369 | printk(KERN_INFO "buffer = 0x%p, bufflen = %d," | 369 | printk(KERN_INFO "buffer = 0x%p, bufflen = %d," |
370 | " done = 0x%p, queuecommand 0x%p\n", | 370 | " done = 0x%p, queuecommand 0x%p\n", |
371 | cmd->request_buffer, cmd->request_bufflen, | 371 | scsi_sglist(cmd), scsi_bufflen(cmd), |
372 | cmd->done, | 372 | cmd->done, |
373 | cmd->device->host->hostt->queuecommand); | 373 | cmd->device->host->hostt->queuecommand); |
374 | 374 | ||
@@ -1016,52 +1016,6 @@ struct scsi_device *scsi_device_lookup(struct Scsi_Host *shost, | |||
1016 | } | 1016 | } |
1017 | EXPORT_SYMBOL(scsi_device_lookup); | 1017 | EXPORT_SYMBOL(scsi_device_lookup); |
1018 | 1018 | ||
1019 | /** | ||
1020 | * scsi_device_cancel - cancel outstanding IO to this device | ||
1021 | * @sdev: Pointer to struct scsi_device | ||
1022 | * @recovery: Boolean instructing function to recover device or not. | ||
1023 | * | ||
1024 | **/ | ||
1025 | int scsi_device_cancel(struct scsi_device *sdev, int recovery) | ||
1026 | { | ||
1027 | struct scsi_cmnd *scmd; | ||
1028 | LIST_HEAD(active_list); | ||
1029 | struct list_head *lh, *lh_sf; | ||
1030 | unsigned long flags; | ||
1031 | |||
1032 | scsi_device_set_state(sdev, SDEV_CANCEL); | ||
1033 | |||
1034 | spin_lock_irqsave(&sdev->list_lock, flags); | ||
1035 | list_for_each_entry(scmd, &sdev->cmd_list, list) { | ||
1036 | if (scmd->request) { | ||
1037 | /* | ||
1038 | * If we are unable to remove the timer, it means | ||
1039 | * that the command has already timed out or | ||
1040 | * finished. | ||
1041 | */ | ||
1042 | if (!scsi_delete_timer(scmd)) | ||
1043 | continue; | ||
1044 | list_add_tail(&scmd->eh_entry, &active_list); | ||
1045 | } | ||
1046 | } | ||
1047 | spin_unlock_irqrestore(&sdev->list_lock, flags); | ||
1048 | |||
1049 | if (!list_empty(&active_list)) { | ||
1050 | list_for_each_safe(lh, lh_sf, &active_list) { | ||
1051 | scmd = list_entry(lh, struct scsi_cmnd, eh_entry); | ||
1052 | list_del_init(lh); | ||
1053 | if (recovery && | ||
1054 | !scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD)) { | ||
1055 | scmd->result = (DID_ABORT << 16); | ||
1056 | scsi_finish_command(scmd); | ||
1057 | } | ||
1058 | } | ||
1059 | } | ||
1060 | |||
1061 | return 0; | ||
1062 | } | ||
1063 | EXPORT_SYMBOL(scsi_device_cancel); | ||
1064 | |||
1065 | MODULE_DESCRIPTION("SCSI core"); | 1019 | MODULE_DESCRIPTION("SCSI core"); |
1066 | MODULE_LICENSE("GPL"); | 1020 | MODULE_LICENSE("GPL"); |
1067 | 1021 | ||