Re: [PATCH 2/4] bdi: Add bdi->id

From: Rik van Riel
Date: Thu Aug 08 2019 - 20:57:58 EST


On Wed, 2019-08-07 at 12:00 -0700, Andrew Morton wrote:
> On Wed, 7 Aug 2019 11:31:51 -0700 Tejun Heo <tj@xxxxxxxxxx> wrote:
>
> > Hello,
> >
> > On Tue, Aug 06, 2019 at 04:01:02PM -0700, Andrew Morton wrote:
> > > On Sat, 3 Aug 2019 07:01:53 -0700 Tejun Heo <tj@xxxxxxxxxx>
> > > wrote:
> > > > There currently is no way to universally identify and lookup a
> > > > bdi
> > > > without holding a reference and pointer to it. This patch adds
> > > > an
> > > > non-recycling bdi->id and implements bdi_get_by_id() which
> > > > looks up
> > > > bdis by their ids. This will be used by memcg foreign inode
> > > > flushing.
> > >
> > > Why is the id non-recycling? Presumably to address some
> > > lifetime/lookup issues, but what are they?
> >
> > The ID by itself is used to point to the bdi from cgroup and idr
> > recycles really aggressively. Combined with, for example, loop
> > device
> > based containers, stale pointing can become pretty common. We're
> > having similar issues with cgroup IDs.
>
> OK, but why is recycling a problem? For example, file descriptors
> recycle as aggressively as is possible, and that doesn't cause any
> trouble. Presumably recycling is a problem with cgroups because of
> some sort of stale reference problem?

PIDs, on the other hand, we recycle as slowly as
possible...