Re: [PATCH] memcg: restore ss->id_lock to spinlock, using RCU for next
From: Eric Dumazet <hidden>
Date: 2012-01-19 13:30:26
Also in:
linux-mm, lkml
Le jeudi 19 janvier 2012 à 04:28 -0800, Tejun Heo a écrit :
Hello, On Wed, Jan 18, 2012 at 11:33 PM, Eric Dumazet [off-list ref] wrote:quoted
Interesting, but should be a patch on its own.Yeap, agreed.quoted
Maybe other idr users can benefit from your idea as well, if patch is labeled "idr: allow idr_get_next() from rcu_read_lock" or something... I suggest introducing idr_get_next_rcu() helper to make the check about rcu cleaner. idr_get_next_rcu(...) { WARN_ON_ONCE(!rcu_read_lock_held()); return idr_get_next(...); }Hmmm... I don't know. Does having a separate set of interface help much? It's easy to avoid/miss the test by using the other one. If we really worry about it, maybe indicating which locking is to be used during init is better? We can remember the lockdep map and trigger WARN_ON_ONCE() if neither the lock or RCU read lock is held.
There is a rcu_dereference_raw(ptr) in idr_get_next() This could be changed to rcu_dereference_check(ptr, condition) to get lockdep support for free :) [ condition would be the appropriate lockdep_is_held(&the_lock_protecting_my_idr) or 'I use the rcu variant' and I hold rcu_read_lock ] This would need to add a 'condition' parameter to idr_gen_next(), but we have very few users in kernel at this moment. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>