On Tue, 27 Feb 2018 12:50:08 +0530 "Aneesh Kumar K.V" <aneesh.ku...@linux.vnet.ibm.com> wrote:
> Christophe Leroy <christophe.le...@c-s.fr> writes: > + if ((start + len) > SLICE_LOW_TOP) { > > + unsigned long start_index = GET_HIGH_SLICE_INDEX(start); > > + unsigned long align_end = ALIGN(end, (1UL << SLICE_HIGH_SHIFT)); > > + unsigned long count = GET_HIGH_SLICE_INDEX(align_end) - > > start_index; > > + unsigned long i; > > > > - slice_bitmap_and(result, mask->high_slices, available->high_slices, > > - slice_count); > > + for (i = start_index; i < start_index + count; i++) { > > + if (!test_bit(i, available->high_slices)) > > + return false; > > + } > > + } > > why not bitmap_equal here instead of test_bit in loop? Because we only have the available bitmap now. If we see large ranges here we could use some bitmap operation like find_next_zero_bit perhaps. Thanks, Nick