Looks good! I'm looking forward to having this fixed. I just had a couple questions related to my own ignorance.
I don't know enough about the implementation to know what to expect, but this command gives me results I don't understand on a few of the systems I tested it on:
> metaslab_alloc_trace_cache::metaslab_trace MSID DVA ASIZE ALLOCATOR WEIGHT RESULT VDEV - 1869828096 0 0 0.03E ? (1574881664)
However, when I use a command more similar to what was there before I get normal looking results:
> ::walk spa | ::walk metaslab | ::head -1 | ::metaslab_trace MSID DVA ASIZE ALLOCATOR WEIGHT RESULT VDEV 458 0 0 e4e43840 0 20
Does ksh provide the ability to use a 'for'-style iteration so we don't have to do the indexing+incrementing dance? That might make this loop a tad more readable if we could use that style.