On Tuesday, May 08, 2012 03:35:07 Matthias Schiffer wrote:
> It should be possible to get rid of the vis_hash_lock altogether, as the
> hash table has spinlocks for the hash lists itself;

Yes, the hash implementation was converted to use fine-grained locking instead 
of one big spinlock as was the rest of the code except for vis.


> overall hash consistency might be a issue though - I would propose adding a
> hash_update function that updates a hash entry without deleting and
> re-adding the hlist node.

Can you give an example of such an "update" ? Where would we need it ?


> I think I found a bug in the hash_add function though. First there is a
> RCU-locked loop that checks if a entry does already exist, but the
> spinlock is taken after the rcu_read_unlock() - thus allowing the same
> entry to be appended twice if two threads try to add it at the same time.

You are right - you found a bug.  :)

Regards,
Marek

Reply via email to