I've actually overhauled the disk removal code for 2.1, but I can see where "prepping" would be useful.
- Right now, drive removal delists the files that are on the disk being removed from the pool, while the disk is being removed, and the pool is made read-only.
- But if you evacuate the disk first and then remove it then the evacuation process doesn't delist any files and the pool is only made read-only for the brief period of the actual removal.
I think the ultimate answer is to change drive removal so that it works as described in #2.
We can do this without changing the existing removing code. All we have to do is add this "prepping" stage that runs before the regular drive removal. It should utilize the existing balancing code, if possible.