Merge branch 'for-2.6.19' of git://brick.kernel.dk/data/git/linux-2.6-block

* 'for-2.6.19' of git://brick.kernel.dk/data/git/linux-2.6-block:
[PATCH] Document bi_sector and sector_t
[PATCH] helper function for retrieving scsi_cmd given host based block layer tag

+36 -8
+1 -6
block/ll_rw_blk.c
··· 840 840 **/ 841 841 struct request *blk_queue_find_tag(request_queue_t *q, int tag) 842 842 { 843 - struct blk_queue_tag *bqt = q->queue_tags; 844 - 845 - if (unlikely(bqt == NULL || tag >= bqt->real_max_depth)) 846 - return NULL; 847 - 848 - return bqt->tag_index[tag]; 843 + return blk_map_queue_find_tag(q->queue_tags, tag); 849 844 } 850 845 851 846 EXPORT_SYMBOL(blk_queue_find_tag);
+2 -1
include/linux/bio.h
··· 70 70 * stacking drivers) 71 71 */ 72 72 struct bio { 73 - sector_t bi_sector; 73 + sector_t bi_sector; /* device address in 512 byte 74 + sectors */ 74 75 struct bio *bi_next; /* request queue link */ 75 76 struct block_device *bi_bdev; 76 77 unsigned long bi_flags; /* status, command, etc */
+8
include/linux/blkdev.h
··· 769 769 extern void blk_free_tags(struct blk_queue_tag *); 770 770 extern void blk_congestion_end(int rw); 771 771 772 + static inline struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt, 773 + int tag) 774 + { 775 + if (unlikely(bqt == NULL || tag >= bqt->real_max_depth)) 776 + return NULL; 777 + return bqt->tag_index[tag]; 778 + } 779 + 772 780 extern void blk_rq_bio_prep(request_queue_t *, struct request *, struct bio *); 773 781 extern int blkdev_issue_flush(struct block_device *, sector_t *); 774 782
+5 -1
include/linux/types.h
··· 129 129 /* this is a special 64bit data type that is 8-byte aligned */ 130 130 #define aligned_u64 unsigned long long __attribute__((aligned(8))) 131 131 132 - /* 132 + /** 133 133 * The type used for indexing onto a disc or disc partition. 134 + * 135 + * Linux always considers sectors to be 512 bytes long independently 136 + * of the devices real block size. 137 + * 134 138 * If required, asm/types.h can override it and define 135 139 * HAVE_SECTOR_T 136 140 */
+20
include/scsi/scsi_tcq.h
··· 144 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 + 147 167 #endif /* CONFIG_BLOCK */ 148 168 #endif /* _SCSI_SCSI_TCQ_H */