On Sat, Aug 03, 2019 at 07:01:53AM -0700, Tejun Heo 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. > > I left bdi_list alone for simplicity and because while rb_tree does > support rcu assignment it doesn't seem to guarantee lossless walk when > walk is racing aginst tree rebalance operations. This would seem like the perfect use for an allocating xarray. That does guarantee lossless walk under the RCU lock. You could get rid of the bdi_list too.