On Thu 22-12-22 22:33:52, Kemeng Shi wrote: > There are three differences between __sbitmap_get and > __sbitmap_get_shallow when searching free bit: > 1. __sbitmap_get_shallow limit number of bit to search per word. > __sbitmap_get has no such limit. > 2. __sbitmap_get_shallow always searches with wrap set. __sbitmap_get set > wrap according to round_robin. > 3. __sbitmap_get_shallow always searches from first bit in first word. > __sbitmap_get searches from first bit when round_robin is not set > otherwise searches from SB_NR_TO_BIT(sb, alloc_hint). > > Add helper function sbitmap_find_bit function to do common search while > accept "limit depth per word", "wrap flag" and "first bit to > search" from caller to support the need of both __sbitmap_get and > __sbitmap_get_shallow. > > Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx> One style nit below, otherwise feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> > @@ -215,11 +211,32 @@ static int __sbitmap_get(struct sbitmap *sb, unsigned int alloc_hint) > alloc_hint = 0; > if (++index >= sb->map_nr) > index = 0; > + > } Pointless empty line here... Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR