May 3, 2019
10:38 p.m.
On Fri, 03 May 2019 16:03:46 -0500, Probir Roy said:
While searching for next slot in a hole, it walks through the same slots over n over.
How did you determine this?
while (++offset < RADIX_TREE_MAP_SIZE) { void *slot = rcu_dereference_raw( /* redundant slot walk */ node->slots[offset]); if (slot) break; }
Looks to me like the ++offset will walk through each potential slot once, and break out if it finds one. I haven't looked at the code closely, perhaps what you're seeing is repeated scan/merge/rescan behavior? Often, compacting a data structure requires multiple passes.