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...