aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/block/osdblk.c3
-rw-r--r--drivers/block/pktcdvd.c1
-rw-r--r--drivers/scsi/aic7xxx_old.c21
-rw-r--r--drivers/scsi/libsas/sas_scsi_host.c13
-rw-r--r--include/scsi/scsi_tcq.h6
5 files changed, 5 insertions, 39 deletions
diff --git a/drivers/block/osdblk.c b/drivers/block/osdblk.c
index 72d62462433d..87311ebac0db 100644
--- a/drivers/block/osdblk.c
+++ b/drivers/block/osdblk.c
@@ -310,8 +310,7 @@ static void osdblk_rq_fn(struct request_queue *q)
310 break; 310 break;
311 311
312 /* filter out block requests we don't understand */ 312 /* filter out block requests we don't understand */
313 if (rq->cmd_type != REQ_TYPE_FS && 313 if (rq->cmd_type != REQ_TYPE_FS) {
314 !(rq->cmd_flags & REQ_HARDBARRIER)) {
315 blk_end_request_all(rq, 0); 314 blk_end_request_all(rq, 0);
316 continue; 315 continue;
317 } 316 }
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index b1cbeb59bb76..0166ea136045 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -753,7 +753,6 @@ static int pkt_generic_packet(struct pktcdvd_device *pd, struct packet_command *
753 753
754 rq->timeout = 60*HZ; 754 rq->timeout = 60*HZ;
755 rq->cmd_type = REQ_TYPE_BLOCK_PC; 755 rq->cmd_type = REQ_TYPE_BLOCK_PC;
756 rq->cmd_flags |= REQ_HARDBARRIER;
757 if (cgc->quiet) 756 if (cgc->quiet)
758 rq->cmd_flags |= REQ_QUIET; 757 rq->cmd_flags |= REQ_QUIET;
759 758
diff --git a/drivers/scsi/aic7xxx_old.c b/drivers/scsi/aic7xxx_old.c
index 93984c9dfe14..e1cd6062776c 100644
--- a/drivers/scsi/aic7xxx_old.c
+++ b/drivers/scsi/aic7xxx_old.c
@@ -2850,12 +2850,6 @@ aic7xxx_done(struct aic7xxx_host *p, struct aic7xxx_scb *scb)
2850 aic_dev->r_total++; 2850 aic_dev->r_total++;
2851 ptr = aic_dev->r_bins; 2851 ptr = aic_dev->r_bins;
2852 } 2852 }
2853 if(cmd->device->simple_tags && cmd->request->cmd_flags & REQ_HARDBARRIER)
2854 {
2855 aic_dev->barrier_total++;
2856 if(scb->tag_action == MSG_ORDERED_Q_TAG)
2857 aic_dev->ordered_total++;
2858 }
2859 x = scb->sg_length; 2853 x = scb->sg_length;
2860 x >>= 10; 2854 x >>= 10;
2861 for(i=0; i<6; i++) 2855 for(i=0; i<6; i++)
@@ -10144,19 +10138,8 @@ static void aic7xxx_buildscb(struct aic7xxx_host *p, struct scsi_cmnd *cmd,
10144 /* We always force TEST_UNIT_READY to untagged */ 10138 /* We always force TEST_UNIT_READY to untagged */
10145 if (cmd->cmnd[0] != TEST_UNIT_READY && sdptr->simple_tags) 10139 if (cmd->cmnd[0] != TEST_UNIT_READY && sdptr->simple_tags)
10146 { 10140 {
10147 if (req->cmd_flags & REQ_HARDBARRIER) 10141 hscb->control |= MSG_SIMPLE_Q_TAG;
10148 { 10142 scb->tag_action = MSG_SIMPLE_Q_TAG;
10149 if(sdptr->ordered_tags)
10150 {
10151 hscb->control |= MSG_ORDERED_Q_TAG;
10152 scb->tag_action = MSG_ORDERED_Q_TAG;
10153 }
10154 }
10155 else
10156 {
10157 hscb->control |= MSG_SIMPLE_Q_TAG;
10158 scb->tag_action = MSG_SIMPLE_Q_TAG;
10159 }
10160 } 10143 }
10161 } 10144 }
10162 if ( !(aic_dev->dtr_pending) && 10145 if ( !(aic_dev->dtr_pending) &&
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
index f0cfba9a1fc8..535085cd27ec 100644
--- a/drivers/scsi/libsas/sas_scsi_host.c
+++ b/drivers/scsi/libsas/sas_scsi_host.c
@@ -130,17 +130,6 @@ static void sas_scsi_task_done(struct sas_task *task)
130 sc->scsi_done(sc); 130 sc->scsi_done(sc);
131} 131}
132 132
133static enum task_attribute sas_scsi_get_task_attr(struct scsi_cmnd *cmd)
134{
135 enum task_attribute ta = TASK_ATTR_SIMPLE;
136 if (cmd->request && blk_rq_tagged(cmd->request)) {
137 if (cmd->device->ordered_tags &&
138 (cmd->request->cmd_flags & REQ_HARDBARRIER))
139 ta = TASK_ATTR_ORDERED;
140 }
141 return ta;
142}
143
144static struct sas_task *sas_create_task(struct scsi_cmnd *cmd, 133static struct sas_task *sas_create_task(struct scsi_cmnd *cmd,
145 struct domain_device *dev, 134 struct domain_device *dev,
146 gfp_t gfp_flags) 135 gfp_t gfp_flags)
@@ -160,7 +149,7 @@ static struct sas_task *sas_create_task(struct scsi_cmnd *cmd,
160 task->ssp_task.retry_count = 1; 149 task->ssp_task.retry_count = 1;
161 int_to_scsilun(cmd->device->lun, &lun); 150 int_to_scsilun(cmd->device->lun, &lun);
162 memcpy(task->ssp_task.LUN, &lun.scsi_lun, 8); 151 memcpy(task->ssp_task.LUN, &lun.scsi_lun, 8);
163 task->ssp_task.task_attr = sas_scsi_get_task_attr(cmd); 152 task->ssp_task.task_attr = TASK_ATTR_SIMPLE;
164 memcpy(task->ssp_task.cdb, cmd->cmnd, 16); 153 memcpy(task->ssp_task.cdb, cmd->cmnd, 16);
165 154
166 task->scatter = scsi_sglist(cmd); 155 task->scatter = scsi_sglist(cmd);
diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h
index 17231385cb37..d6e7994aa634 100644
--- a/include/scsi/scsi_tcq.h
+++ b/include/scsi/scsi_tcq.h
@@ -97,13 +97,9 @@ static inline void scsi_deactivate_tcq(struct scsi_device *sdev, int depth)
97static inline int scsi_populate_tag_msg(struct scsi_cmnd *cmd, char *msg) 97static inline int scsi_populate_tag_msg(struct scsi_cmnd *cmd, char *msg)
98{ 98{
99 struct request *req = cmd->request; 99 struct request *req = cmd->request;
100 struct scsi_device *sdev = cmd->device;
101 100
102 if (blk_rq_tagged(req)) { 101 if (blk_rq_tagged(req)) {
103 if (sdev->ordered_tags && req->cmd_flags & REQ_HARDBARRIER) 102 *msg++ = MSG_SIMPLE_TAG;
104 *msg++ = MSG_ORDERED_TAG;
105 else
106 *msg++ = MSG_SIMPLE_TAG;
107 *msg++ = req->tag; 103 *msg++ = req->tag;
108 return 2; 104 return 2;
109 } 105 }