Quoting Chris Wilson (2019-08-05 16:58:56) > Quoting Christian König (2019-08-05 16:45:50) > > The reservation object should be capable of handling its internal memory > > management itself. And since we search for a free slot to add the fence > > from the beginning this is actually a waste of time and only minimal helpful. > > "From the beginning?" Attempting to prune signaled fences on insertion is > quite recent. > > However, that doesn't help the cases where reservation_object keeps on > holding a reference to the fences for idle objects. It's an absolute > nightmare of a reference trap. Fwiw, it's a pet peeve, and not a fundamental object to removing some loops inside reservation_object. Here, the seqno is being used as a guide to avoid trying to take the lock if it's been externally modified, but it would equally work with just a plain trylock + test_rcu. Better yet would be autopruning, but that suggests a slightly different data structure an rbtree instead of an array and spinlocked cb_list manipulation instead of a plain refcount. -Chris