On Wed, 2017-03-22 at 13:25 +0100, Peter Zijlstra wrote: > On Tue, Mar 21, 2017 at 07:03:19PM -0700, Eric Dumazet wrote: > > > Note that we might define two refcount_inc() : One that does whole > > tests, and refcount_inc_relaxed() that might translate to atomic_inc() > > on non debug kernels. > > So you'd want a duplicate interface, such that most code, which doesn't > care about refcount performance much, can still have all the tests > enabled. > > But the code that cares about it (and preferably can prove it with > numbers) can use the other. > > I'm also somewhat hesitant to use _relaxed for this distinction, as it > has a clear meaning in atomics, maybe _nocheck? > > Also; what operations do you want _nocheck variants of, only > refcount_inc() ? I was mostly thinking of points where we were already checking the value either before or after the atomic_inc(), using some lazy check (a la WARN_ON(atomic_read(p) == 0) or something like that. But admittedly we can replace all these by standard refcount_inc() and simply provide a CONFIG option to turn off the checks, and let brave people enable this option.