> Will this still work if new_bucket is not equal to hctl->low_mask + 1?
Yes, for example:
low_mask: 0x011, high_mask: 0x111, old_bucket: 0x010, new_bucket: 0x110
The old_bucket's hash value like 0x***010 or 0x***110, the later is in the old_bucket is because we didn't have new_bucket before, so only hash value like 0x***110 needs relocation: hashvalue & (low_mask + 1) != 0