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?