Searched hist:"9672 b0d43782047b1825a96bafee1b6aefa35bc2" (Results 1 – 2 of 2) sorted by relevance
/linux/include/linux/ |
H A D | sbitmap.h | diff 9672b0d43782047b1825a96bafee1b6aefa35bc2 Sat Oct 09 21:02:23 CEST 2021 Jens Axboe <axboe@kernel.dk> 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>
|
/linux/lib/ |
H A D | sbitmap.c | diff 9672b0d43782047b1825a96bafee1b6aefa35bc2 Sat Oct 09 21:02:23 CEST 2021 Jens Axboe <axboe@kernel.dk> 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>
|