IDA_BITMAP_BITS
XA_STATE(xas, &ida->xa, min / IDA_BITMAP_BITS);
unsigned bit = min % IDA_BITMAP_BITS;
bitmap = xas_find_marked(&xas, max / IDA_BITMAP_BITS, XA_FREE_MARK);
if (xas.xa_index > min / IDA_BITMAP_BITS)
if (xas.xa_index * IDA_BITMAP_BITS + bit > max)
if (xas.xa_index * IDA_BITMAP_BITS + bit > max)
bit = find_next_zero_bit(bitmap->bitmap, IDA_BITMAP_BITS, bit);
if (xas.xa_index * IDA_BITMAP_BITS + bit > max)
if (bit == IDA_BITMAP_BITS)
if (bitmap_full(bitmap->bitmap, IDA_BITMAP_BITS))
xas.xa_index = min / IDA_BITMAP_BITS;
bit = min % IDA_BITMAP_BITS;
return xas.xa_index * IDA_BITMAP_BITS + bit;
xas_set(&xas, min / IDA_BITMAP_BITS);
bit = min % IDA_BITMAP_BITS;
unsigned long index = min / IDA_BITMAP_BITS;
unsigned int offset = min % IDA_BITMAP_BITS;
entry = xa_find(&ida->xa, &index, max / IDA_BITMAP_BITS, XA_PRESENT);
if (index > min / IDA_BITMAP_BITS)
if (index * IDA_BITMAP_BITS + offset > max) {
size = IDA_BITMAP_BITS;
index * IDA_BITMAP_BITS + bit > max)
return index * IDA_BITMAP_BITS + bit;
XA_STATE(xas, &ida->xa, id / IDA_BITMAP_BITS);
unsigned bit = id % IDA_BITMAP_BITS;
if (bitmap_empty(bitmap->bitmap, IDA_BITMAP_BITS)) {
#define IDA_CHUNK_SHIFT ilog2(IDA_BITMAP_BITS)
xa_dump_index(index * IDA_BITMAP_BITS, shift);
xa_dump_index(index * IDA_BITMAP_BITS, ilog2(BITS_PER_LONG));
xa_dump_index(index * IDA_BITMAP_BITS, IDA_CHUNK_SHIFT);
for (i = 0; i < IDA_BITMAP_BITS * 2; i += IDA_BITMAP_BITS) {
for (i = 0; i < IDA_BITMAP_BITS * 2; i++)
for (i = IDA_BITMAP_BITS * 2; i > 0; i--)
for (i = 0; i < IDA_BITMAP_BITS + BITS_PER_LONG - 4; i++)
for (i = IDA_BITMAP_BITS + BITS_PER_LONG - 4; i > 0; i--)
for (i = 0; i < IDA_BITMAP_BITS; i++) {
IDA_BUG_ON(&ida, ((i % IDA_BITMAP_BITS) !=
((i % IDA_BITMAP_BITS) != 0));
IDA_BUG_ON(&ida, (i % IDA_BITMAP_BITS) ==