On Tue, May 14, 2013 at 05:28:36PM +0200, Oleg Nesterov wrote: > On 05/14, Tejun Heo wrote: > > > > > +int percpu_ref_tryget(struct percpu_ref *ref) > > > +{ > > > + int ret = 1; > > > + > > > + preempt_disable(); > > > + > > > + if (!percpu_ref_dead(ref)) > > > + percpu_ref_get(ref); > > > + else > > > + ret = 0; > > > + > > > + preempt_enable(); > > > + > > > + return ret; > > > +} > ... > > BTW, why is this > > function necessary? What's the use case? > > Yes, I was wondering too. > > And please note that this code _looks_ wrong, percpu_ref_get() still > can increment ref->count. Yeah I see what you mean, I changed how ret is set. But also splitting tryget() and count() out into another patch to go with the module conversion. > Hmm. Just noticed this comment above percpu_ref_kill() > > * The caller must issue a synchronize_rcu()/call_rcu() before calling > * percpu_ref_put() to drop the initial ref. > > Really? That's also left over from the dynamic version, whoops. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html