WIP - much improved
multiple optimizations, cleanups, fixes. Still has some debug logging enabled, etc. but most are disabled.
Refreshed vdev_iokit.c to be more in line with upstream vdev_disk.c, which required rewriting vdev_iokit_util.c to function better.
Rewrote vdev_iokit_find_by_guid, and it functions as expected when importing a pool where the disk location has changed. Need to merge these changes into vdev-iokit branch as well.
Tested setting vdev_ashift, conditionally when not zero, but existing pools were not able to be used (At least ashift=12 pools). Works fine when vdev_shift is not set.
Last but not least - booting from a zvol is working repeatedly, in a VM. Testing on bare metal next.