On Thu, May 09, 2019 at 09:53:43AM -0700, Tejun Heo wrote: > On Tue, May 07, 2019 at 10:01:47AM -0700, Roman Gushchin wrote: > > In most cases percpu reference counters are not switched to the > > percpu mode after they reach the atomic mode. Some obvious exceptions > > are reference counters which are initialized into the atomic > > mode (using PERCPU_REF_INIT_ATOMIC and PERCPU_REF_INIT_DEAD flags), > > and there are few other exceptions. > > > > But in most cases there is no way back, and once the reference counter > > is switched to the atomic mode, there is no reason to wait for > > percpu_ref_exit() to release the percpu memory. Of course, the size > > of a single counter is not so big, but because it can pin the whole > > percpu block in memory, the memory footprint can be noticeable > > (e.g. on my 32 CPUs machine a percpu block is 8Mb large). > > > > To make releasing of the percpu memory as early as possible, let's > > introduce the PERCPU_REF_ALLOW_REINIT flag with the following semantics: > > it has to be set in order to switch a percpu reference counter to the > > percpu mode after the initialization. PERCPU_REF_INIT_ATOMIC and > > PERCPU_REF_INIT_DEAD flags will implicitly assume PERCPU_REF_ALLOW_REINIT. > > > > This patch doesn't introduce any functional change to avoid any > > regressions. It will be done later in the patchset after adjusting > > all call sites, which are reviving percpu counters. > > > > Signed-off-by: Roman Gushchin <g...@fb.com> > > For all patches in the series: > > Acked-by: Tejun Heo <t...@kenrel.org> > > Thanks. > > -- > tejun
Great, I've applied this to for-5.3. Thanks, Dennis