[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <e7319f50-999b-2540-62f1-201afcb29bf3@gmail.com>
Date: Thu, 21 Oct 2021 09:41:19 +0100
From: Pavel Begunkov <asml.silence@...il.com>
To: Tejun Heo <tj@...nel.org>
Cc: linux-block@...r.kernel.org, Jens Axboe <axboe@...nel.dk>,
linux-kernel@...r.kernel.org, linux-mm@...ck.org,
Christoph Lameter <cl@...ux.com>,
Dennis Zhou <dennis@...nel.org>
Subject: Re: [PATCH 1/2] percpu_ref: percpu_ref_tryget_live() version holding
RCU
On 10/20/21 21:10, Tejun Heo wrote:
> On Wed, Oct 20, 2021 at 09:03:18PM +0100, Pavel Begunkov wrote:
>> +/**
>> + * percpu_ref_tryget_live_rcu - same as percpu_ref_tryget_live() but the
>> + * caller is responsible for taking RCU.
>> + *
>> + * This function is safe to call as long as @ref is between init and exit.
>> + */
>> +static inline bool percpu_ref_tryget_live_rcu(struct percpu_ref *ref)
>> +{
>> + unsigned long __percpu *percpu_count;
>> + bool ret = false;
>> +
>> + if (likely(__ref_is_percpu(ref, &percpu_count))) {
>> + this_cpu_inc(*percpu_count);
>> + ret = true;
>> + } else if (!(ref->percpu_count_ptr & __PERCPU_REF_DEAD)) {
>> + ret = atomic_long_inc_not_zero(&ref->data->count);
>> + }
>> + return ret;
>> +}
>
> Can we please add rcu_read_lock_held() assertion? Other than that, looks
> fine to me.
Will add, thanks
--
Pavel Begunkov
Powered by blists - more mailing lists