|
@@ -4,6 +4,7 @@
|
|
|
#include <linux/blkdev.h>
|
|
|
#include <scsi/scsi_cmnd.h>
|
|
|
#include <scsi/scsi_device.h>
|
|
|
+#include <scsi/scsi_host.h>
|
|
|
|
|
|
|
|
|
#define MSG_SIMPLE_TAG 0x20
|
|
@@ -66,7 +67,8 @@ static inline void scsi_activate_tcq(struct scsi_device *sdev, int depth)
|
|
|
return;
|
|
|
|
|
|
if (!blk_queue_tagged(sdev->request_queue))
|
|
|
- blk_queue_init_tags(sdev->request_queue, depth, NULL);
|
|
|
+ blk_queue_init_tags(sdev->request_queue, depth,
|
|
|
+ sdev->host->bqt);
|
|
|
|
|
|
scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), depth);
|
|
|
}
|
|
@@ -131,4 +133,14 @@ static inline struct scsi_cmnd *scsi_find_tag(struct scsi_device *sdev, int tag)
|
|
|
return sdev->current_cmnd;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * scsi_init_shared_tag_map - create a shared tag map
|
|
|
+ * @shost: the host to share the tag map among all devices
|
|
|
+ * @depth: the total depth of the map
|
|
|
+ */
|
|
|
+static inline void scsi_init_shared_tag_map(struct Scsi_Host *shost, int depth)
|
|
|
+{
|
|
|
+ shost->bqt = blk_init_tags(depth);
|
|
|
+}
|
|
|
+
|
|
|
#endif /* _SCSI_SCSI_TCQ_H */
|