hammer2 - Fix excess chain structure allocations during bulkfree (3)
* Fix excess chain structure allocations during bulkfree, AGAIN.
This time for real. The algorithmic change I made was not sufficient,
because I was not backing-out the recursion all the way after hitting
a deferral. Instead, the code was re-recursing down another branch
while still really deep into the tree.
The problem was mostly triggered on the inode radix tree for filesystems
containing many inodes (like a hundred million inodes), and would lead
to a kmalloc panic due to memory exhaustion.
* Fixed for real this time. When we hit the recursion limit, the code
fully backs out of the traversal (recording its placemarkers on the way
back up), then starts again at the deepest placemarker rather than
the shallowest placemarker.