diff options
Diffstat (limited to 'include/scsi/scsi_tcq.h')
-rw-r--r-- | include/scsi/scsi_tcq.h | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h index d04d05adfa9b..cf4c219c0b5c 100644 --- a/include/scsi/scsi_tcq.h +++ b/include/scsi/scsi_tcq.h | |||
@@ -6,7 +6,6 @@ | |||
6 | #include <scsi/scsi_device.h> | 6 | #include <scsi/scsi_device.h> |
7 | #include <scsi/scsi_host.h> | 7 | #include <scsi/scsi_host.h> |
8 | 8 | ||
9 | |||
10 | #define MSG_SIMPLE_TAG 0x20 | 9 | #define MSG_SIMPLE_TAG 0x20 |
11 | #define MSG_HEAD_TAG 0x21 | 10 | #define MSG_HEAD_TAG 0x21 |
12 | #define MSG_ORDERED_TAG 0x22 | 11 | #define MSG_ORDERED_TAG 0x22 |
@@ -14,6 +13,7 @@ | |||
14 | #define SCSI_NO_TAG (-1) /* identify no tag in use */ | 13 | #define SCSI_NO_TAG (-1) /* identify no tag in use */ |
15 | 14 | ||
16 | 15 | ||
16 | #ifdef CONFIG_BLOCK | ||
17 | 17 | ||
18 | /** | 18 | /** |
19 | * scsi_get_tag_type - get the type of tag the device supports | 19 | * scsi_get_tag_type - get the type of tag the device supports |
@@ -100,7 +100,7 @@ static inline int scsi_populate_tag_msg(struct scsi_cmnd *cmd, char *msg) | |||
100 | struct scsi_device *sdev = cmd->device; | 100 | struct scsi_device *sdev = cmd->device; |
101 | 101 | ||
102 | if (blk_rq_tagged(req)) { | 102 | if (blk_rq_tagged(req)) { |
103 | if (sdev->ordered_tags && req->flags & REQ_HARDBARRIER) | 103 | if (sdev->ordered_tags && req->cmd_flags & REQ_HARDBARRIER) |
104 | *msg++ = MSG_ORDERED_TAG; | 104 | *msg++ = MSG_ORDERED_TAG; |
105 | else | 105 | else |
106 | *msg++ = MSG_SIMPLE_TAG; | 106 | *msg++ = MSG_SIMPLE_TAG; |
@@ -144,4 +144,25 @@ static inline int scsi_init_shared_tag_map(struct Scsi_Host *shost, int depth) | |||
144 | return shost->bqt ? 0 : -ENOMEM; | 144 | return shost->bqt ? 0 : -ENOMEM; |
145 | } | 145 | } |
146 | 146 | ||
147 | /** | ||
148 | * scsi_host_find_tag - find the tagged command by host | ||
149 | * @shost: pointer to scsi_host | ||
150 | * @tag: tag of the scsi_cmnd | ||
151 | * | ||
152 | * Notes: | ||
153 | * Only works with tags allocated by the generic blk layer. | ||
154 | **/ | ||
155 | static inline struct scsi_cmnd *scsi_host_find_tag(struct Scsi_Host *shost, | ||
156 | int tag) | ||
157 | { | ||
158 | struct request *req; | ||
159 | |||
160 | if (tag != SCSI_NO_TAG) { | ||
161 | req = blk_map_queue_find_tag(shost->bqt, tag); | ||
162 | return req ? (struct scsi_cmnd *)req->special : NULL; | ||
163 | } | ||
164 | return NULL; | ||
165 | } | ||
166 | |||
167 | #endif /* CONFIG_BLOCK */ | ||
147 | #endif /* _SCSI_SCSI_TCQ_H */ | 168 | #endif /* _SCSI_SCSI_TCQ_H */ |