diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2008-10-27 14:20:59 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-10-27 14:25:30 -0400 |
commit | 3070f69b66b7ab2f02d8a2500edae07039c38508 (patch) | |
tree | 508c5f64ac507d8248f591d9e1a6da93379004e5 /include/scsi/scsi_tcq.h | |
parent | 1d63e726408dfdb3e10ed8f00c383b30ebb333d3 (diff) |
scsi: make sure that scsi_init_shared_tag_map() doesn't overwrite existing map
Right now callers have to check whether scsi_host->bqt is already
set up, it's much cleaner to just have scsi_init_shared_tag_map()
does this check on its own.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include/scsi/scsi_tcq.h')
-rw-r--r-- | include/scsi/scsi_tcq.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h index cf4c219c0b5c..17231385cb37 100644 --- a/include/scsi/scsi_tcq.h +++ b/include/scsi/scsi_tcq.h | |||
@@ -140,8 +140,18 @@ static inline struct scsi_cmnd *scsi_find_tag(struct scsi_device *sdev, int tag) | |||
140 | */ | 140 | */ |
141 | static inline int scsi_init_shared_tag_map(struct Scsi_Host *shost, int depth) | 141 | static inline int scsi_init_shared_tag_map(struct Scsi_Host *shost, int depth) |
142 | { | 142 | { |
143 | shost->bqt = blk_init_tags(depth); | 143 | /* |
144 | return shost->bqt ? 0 : -ENOMEM; | 144 | * If the shared tag map isn't already initialized, do it now. |
145 | * This saves callers from having to check ->bqt when setting up | ||
146 | * devices on the shared host (for libata) | ||
147 | */ | ||
148 | if (!shost->bqt) { | ||
149 | shost->bqt = blk_init_tags(depth); | ||
150 | if (!shost->bqt) | ||
151 | return -ENOMEM; | ||
152 | } | ||
153 | |||
154 | return 0; | ||
145 | } | 155 | } |
146 | 156 | ||
147 | /** | 157 | /** |