diff options
author | Christoph Hellwig <hch@lst.de> | 2015-10-08 04:28:04 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Odin.com> | 2015-11-09 20:11:57 -0500 |
commit | 64d513ac31bd02a3c9b69ef04444f36c196f9a9d (patch) | |
tree | 240e1bb8a92f76b53a5cc3c00e528851a488ebf8 /drivers/scsi/53c700.c | |
parent | 720ba808e9ca276919f566bbe2b4e09c79f25faa (diff) |
scsi: use host wide tags by default
This patch changes the !blk-mq path to the same defaults as the blk-mq
I/O path by always enabling block tagging, and always using host wide
tags. We've had blk-mq available for a few releases so bugs with
this mode should have been ironed out, and this ensures we get better
coverage of over tagging setup over different configs.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Jens Axboe <axboe@kernel.dk>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Diffstat (limited to 'drivers/scsi/53c700.c')
-rw-r--r-- | drivers/scsi/53c700.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c index a209c3418898..d4c285688ce9 100644 --- a/drivers/scsi/53c700.c +++ b/drivers/scsi/53c700.c | |||
@@ -325,7 +325,6 @@ NCR_700_detect(struct scsi_host_template *tpnt, | |||
325 | tpnt->slave_destroy = NCR_700_slave_destroy; | 325 | tpnt->slave_destroy = NCR_700_slave_destroy; |
326 | tpnt->slave_alloc = NCR_700_slave_alloc; | 326 | tpnt->slave_alloc = NCR_700_slave_alloc; |
327 | tpnt->change_queue_depth = NCR_700_change_queue_depth; | 327 | tpnt->change_queue_depth = NCR_700_change_queue_depth; |
328 | tpnt->use_blk_tags = 1; | ||
329 | 328 | ||
330 | if(tpnt->name == NULL) | 329 | if(tpnt->name == NULL) |
331 | tpnt->name = "53c700"; | 330 | tpnt->name = "53c700"; |
@@ -1107,7 +1106,9 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp, | |||
1107 | BUG(); | 1106 | BUG(); |
1108 | } | 1107 | } |
1109 | if(hostdata->msgin[1] == A_SIMPLE_TAG_MSG) { | 1108 | if(hostdata->msgin[1] == A_SIMPLE_TAG_MSG) { |
1110 | struct scsi_cmnd *SCp = scsi_find_tag(SDp, hostdata->msgin[2]); | 1109 | struct scsi_cmnd *SCp; |
1110 | |||
1111 | SCp = scsi_host_find_tag(SDp->host, hostdata->msgin[2]); | ||
1111 | if(unlikely(SCp == NULL)) { | 1112 | if(unlikely(SCp == NULL)) { |
1112 | printk(KERN_ERR "scsi%d: (%d:%d) no saved request for tag %d\n", | 1113 | printk(KERN_ERR "scsi%d: (%d:%d) no saved request for tag %d\n", |
1113 | host->host_no, reselection_id, lun, hostdata->msgin[2]); | 1114 | host->host_no, reselection_id, lun, hostdata->msgin[2]); |
@@ -1119,7 +1120,9 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp, | |||
1119 | "reselection is tag %d, slot %p(%d)\n", | 1120 | "reselection is tag %d, slot %p(%d)\n", |
1120 | hostdata->msgin[2], slot, slot->tag); | 1121 | hostdata->msgin[2], slot, slot->tag); |
1121 | } else { | 1122 | } else { |
1122 | struct scsi_cmnd *SCp = scsi_find_tag(SDp, SCSI_NO_TAG); | 1123 | struct scsi_cmnd *SCp; |
1124 | |||
1125 | SCp = scsi_host_find_tag(SDp->host, SCSI_NO_TAG); | ||
1123 | if(unlikely(SCp == NULL)) { | 1126 | if(unlikely(SCp == NULL)) { |
1124 | sdev_printk(KERN_ERR, SDp, | 1127 | sdev_printk(KERN_ERR, SDp, |
1125 | "no saved request for untagged cmd\n"); | 1128 | "no saved request for untagged cmd\n"); |
@@ -1823,7 +1826,7 @@ NCR_700_queuecommand_lck(struct scsi_cmnd *SCp, void (*done)(struct scsi_cmnd *) | |||
1823 | slot->tag, slot); | 1826 | slot->tag, slot); |
1824 | } else { | 1827 | } else { |
1825 | slot->tag = SCSI_NO_TAG; | 1828 | slot->tag = SCSI_NO_TAG; |
1826 | /* must populate current_cmnd for scsi_find_tag to work */ | 1829 | /* must populate current_cmnd for scsi_host_find_tag to work */ |
1827 | SCp->device->current_cmnd = SCp; | 1830 | SCp->device->current_cmnd = SCp; |
1828 | } | 1831 | } |
1829 | /* sanity check: some of the commands generated by the mid-layer | 1832 | /* sanity check: some of the commands generated by the mid-layer |