In short, sbitmap_deferred_clear() lights up pretty much in my profiler,
so these optimisations gave me ~1% more t-put. All the heavy stuff is in
[2/2]. Would love someones eye to check it.

I also want to replace cmpxchg() in that function with a single
atomic and, that's slightly lighter and also transfers it from
lock-free to wait-free, that's pretty neat.
The problem is that apparently there is a non-atomic_t atomic and,
and atomic_t is unsigned int but all the bitmap do unsigned long.
Advice is welcome.

Pavel Begunkov (2):
  sbitmap: optimise sbitmap_deferred_clear()
  sbitmap: remove swap_lock

 include/linux/sbitmap.h |  5 -----
 lib/sbitmap.c           | 21 +++++++--------------
 2 files changed, 7 insertions(+), 19 deletions(-)

-- 
2.24.0

Reply via email to