The current block queue implementation already contains most of the machinery for shared tag maps. The only remaining pieces are a way to allocate and destroy a tag map independently of the queues (so that the maps can be managed on the life cycle of the overseeing entity)
Showing the changes to include/linux/blkdev.h (1 of 2 files). Show all
Unified · Split
| @@ -746,6 +746,8 @@ extern void blk_queue_free_tags(request_queue_t *); · 745 unmodified lines | ||
| 746 | 746 | extern int blk_queue_resize_tags(request_queue_t *, int); |
| 747 | 747 | extern void blk_queue_invalidate_tags(request_queue_t *); |
| 748 | 748 | extern long blk_congestion_wait(int rw, long timeout); |
| 749 | +extern struct blk_queue_tag *blk_init_tags(int); | |
| 750 | +extern void blk_free_tags(struct blk_queue_tag *); | |
| 749 | 751 | |
| 750 | 752 | extern void blk_rq_bio_prep(request_queue_t *, struct request *, struct bio *); |
| 751 | 753 | extern int blkdev_issue_flush(struct block_device *, sector_t *); |