• Jens Axboe's avatar
    sbitmap: add __sbitmap_queue_get_batch() · 9672b0d4
    Jens Axboe authored
    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: default avatarJens Axboe <axboe@kernel.dk>
    9672b0d4
sbitmap.c 17.7 KB