On 29 March 2018 at 14:24, Steven Whitehouse <swhit...@redhat.com> wrote: > Hi, > > Can we solve the problem another way, by not taking refs on the glocks when > we are iterating over them for the debugfs files? I assume that is the main > issue here. > > We didn't used to take refs since the rcu locking was enough during the walk > itself. We used to only keep track of the hash bucket and offset within the > bucket when we dropped the rcu lock between calls to the iterator. I may > have lost track of why that approach did not work?
That doesn't work because when a glock doesn't fit into one read, we need to make sure that the next read will continue with the same glock or else we'll end up with a corrupted dump. And rhashtable_walk_peek cannot guarantee that. I've done some minimal performance testing and the additional ref taking only impacted the performance in the 10% range or less, so it doesn't really matter. Andreas