Re: [PATCH v5 4/9] percpu-refcount: Introduce percpu_ref_is_in_use()

Tejun Heo
2018-08-08T15:23:51Z

Hello,

On Tue, Aug 07, 2018 at 03:51:28PM -0700, Bart Van Assche wrote:
> Introduce a function that allows to determine whether a per-cpu refcount
> is in use. This function will be used in a later patch to determine
> whether or not any block layer requests are being executed.

I thought about it a bit and am having a bit of difficulty convincing
myself this is necessary. Switching a percpu_ref to atomic mode isn't
expensive - it's one spinlock cycle, a rcu wait and one sweep of the
percpu counters. The most expensive part - the percpu sweep - needs
to be there even with optimization, the wait doesn't really matter as
all it'll do is slightly delaying timer based PM operation and can be
overlayed with the propagation of set_pm_only() anyway.

So, how about just doing the simple thing? Switch it to atomic mode
and check the counter and switch back to percpu mode afterwards. If
we see any issues with that, we can try to optimize it later but that
seems unlikely to me.

Thanks.

--
tejun