summaryrefslogtreecommitdiffstats
path: root/block/blk-mq-tag.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2021-10-09 13:02:23 -0600
committerJens Axboe <axboe@kernel.dk>2021-10-18 06:17:35 -0600
commit9672b0d43782047b1825a96bafee1b6aefa35bc2 (patch)
treecbf520eccf39ff3e23cde171496c6d382e280bfa /block/blk-mq-tag.c
parent8971a3b7f1bf2b3096e558a0362a469dee77f426 (diff)
downloadlinux-stable-9672b0d43782047b1825a96bafee1b6aefa35bc2.tar.gz
linux-stable-9672b0d43782047b1825a96bafee1b6aefa35bc2.tar.bz2
linux-stable-9672b0d43782047b1825a96bafee1b6aefa35bc2.zip
sbitmap: add __sbitmap_queue_get_batch()
The block layer tag allocation batching still calls into sbitmap to get each tag, but we can improve on that. Add __sbitmap_queue_get_batch(), which returns a mask of tags all at once, along with an offset for those tags. An example return would be 0xff, where bits 0..7 are set, with tag_offset == 128. The valid tags in this case would be 128..135. A batch is specific to an individual sbitmap_map, hence it cannot be larger than that. The requested number of tags is automatically reduced to the max that can be satisfied with a single map. On failure, 0 is returned. Caller should fall back to single tag allocation at that point/ Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-mq-tag.c')
0 files changed, 0 insertions, 0 deletions