harvest_committables itself is executed in a loop many times (think
of the recursive case). All allocations that were done in subpool
can be freed up when we are done with this entry. Now that they are
done in pool, those allocations must wait to be freed until its
parent is cleaned up. That has nasty implications for a directory
that has a large number of children directories. Each allocation
done in pool will now have to wait until its parent is cleaned up -
that will dramatically increase the memory footprint for this case.

Though it does look like the previous code made a mistake in not
sending loop_pool to harvest_committables... -- justin