On Thu, Nov 22, 2018 at 15:20:25 +0800, guangrong.xiao@xxxxxxxxx wrote: > +static uint64_t get_free_request_bitmap(Threads *threads, ThreadLocal *thread) > +{ > + uint64_t request_fill_bitmap, request_done_bitmap, result_bitmap; > + > + request_fill_bitmap = atomic_rcu_read(&thread->request_fill_bitmap); > + request_done_bitmap = atomic_rcu_read(&thread->request_done_bitmap); > + bitmap_xor(&result_bitmap, &request_fill_bitmap, &request_done_bitmap, > + threads->thread_requests_nr); This is not wrong, but it's a big ugly. Instead, I would: - Introduce bitmap_xor_atomic in a previous patch - Use bitmap_xor_atomic here, getting rid of the rcu reads Thanks, Emilio