diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-11-02 17:39:35 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-11-02 17:39:35 -0500 |
| commit | ad2be3796ff4c834e5c102d5455e76ee07dcf71d (patch) | |
| tree | f3cfa4950b401cb011069fb7bd1b16eb741ce687 /include | |
| parent | 12267166c582f43a41829ffa77be2e7e72d5d4dd (diff) | |
| parent | ff150a76ae782a2d8730945c869869f77f2fcd39 (diff) | |
Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI fixes from James Bottomley:
"This is a set of six patches consisting of:
- two MAINTAINER updates
- two scsi-mq fixs for the old parallel interface (not every request
is tagged and we need to set the right flags to populate the SPI
tag message)
- a fix for a memory leak in scatterlist traversal caused by a
preallocation update in 3.17
- an ipv6 fix for cxgbi"
[ The scatterlist fix also came in separately through the block layer tree ]
* tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
MAINTAINERS: ufs - remove self
MAINTAINERS: change hpsa and cciss maintainer
libcxgbi : support ipv6 address host_param
scsi: set REQ_QUEUE for the blk-mq case
Revert "block: all blk-mq requests are tagged"
lib/scatterlist: fix memory leak with scsi-mq
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/blkdev.h | 3 | ||||
| -rw-r--r-- | include/scsi/scsi_tcq.h | 8 |
2 files changed, 5 insertions, 6 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 6cbee8395f60..aac0f9ea952a 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -1136,8 +1136,7 @@ static inline bool blk_needs_flush_plug(struct task_struct *tsk) | |||
| 1136 | /* | 1136 | /* |
| 1137 | * tag stuff | 1137 | * tag stuff |
| 1138 | */ | 1138 | */ |
| 1139 | #define blk_rq_tagged(rq) \ | 1139 | #define blk_rq_tagged(rq) ((rq)->cmd_flags & REQ_QUEUED) |
| 1140 | ((rq)->mq_ctx || ((rq)->cmd_flags & REQ_QUEUED)) | ||
| 1141 | extern int blk_queue_start_tag(struct request_queue *, struct request *); | 1140 | extern int blk_queue_start_tag(struct request_queue *, struct request *); |
| 1142 | extern struct request *blk_queue_find_tag(struct request_queue *, int); | 1141 | extern struct request *blk_queue_find_tag(struct request_queue *, int); |
| 1143 | extern void blk_queue_end_tag(struct request_queue *, struct request *); | 1142 | extern void blk_queue_end_tag(struct request_queue *, struct request *); |
diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h index e64583560701..56ed843969ca 100644 --- a/include/scsi/scsi_tcq.h +++ b/include/scsi/scsi_tcq.h | |||
| @@ -67,8 +67,9 @@ static inline void scsi_activate_tcq(struct scsi_device *sdev, int depth) | |||
| 67 | if (!sdev->tagged_supported) | 67 | if (!sdev->tagged_supported) |
| 68 | return; | 68 | return; |
| 69 | 69 | ||
| 70 | if (!shost_use_blk_mq(sdev->host) && | 70 | if (shost_use_blk_mq(sdev->host)) |
| 71 | !blk_queue_tagged(sdev->request_queue)) | 71 | queue_flag_set_unlocked(QUEUE_FLAG_QUEUED, sdev->request_queue); |
| 72 | else if (!blk_queue_tagged(sdev->request_queue)) | ||
| 72 | blk_queue_init_tags(sdev->request_queue, depth, | 73 | blk_queue_init_tags(sdev->request_queue, depth, |
| 73 | sdev->host->bqt); | 74 | sdev->host->bqt); |
| 74 | 75 | ||
| @@ -81,8 +82,7 @@ static inline void scsi_activate_tcq(struct scsi_device *sdev, int depth) | |||
| 81 | **/ | 82 | **/ |
| 82 | static inline void scsi_deactivate_tcq(struct scsi_device *sdev, int depth) | 83 | static inline void scsi_deactivate_tcq(struct scsi_device *sdev, int depth) |
| 83 | { | 84 | { |
| 84 | if (!shost_use_blk_mq(sdev->host) && | 85 | if (blk_queue_tagged(sdev->request_queue)) |
| 85 | blk_queue_tagged(sdev->request_queue)) | ||
| 86 | blk_queue_free_tags(sdev->request_queue); | 86 | blk_queue_free_tags(sdev->request_queue); |
| 87 | scsi_adjust_queue_depth(sdev, 0, depth); | 87 | scsi_adjust_queue_depth(sdev, 0, depth); |
| 88 | } | 88 | } |
