+ do {
+ struct axmap_set_data data = { .nr_bits = nr_bits, };
+ unsigned int max_bits, this_set;
+
+ max_bits = BLOCKS_PER_UNIT - (bit_nr & BLOCKS_PER_UNIT_MASK);
+ if (max_bits < nr_bits)
+ data.nr_bits = max_bits;
+
+ this_set = data.nr_bits;
+ __axmap_set(axmap, bit_nr, &data);
+ set_bits += data.set_bits;
+ if (data.set_bits != this_set)
+ break;
+
+ nr_bits -= data.set_bits;
+ bit_nr += data.set_bits;
+ } while (nr_bits);
+
+ return set_bits;