Today zdb uses vdev_file_io_start() which either calls vn_rwdr() or pread()/pwrite() synchronously. Instead it should use a model more similar to vdev_disk_io_start() to issue the I/Os and allow a callback mechanism to run it through the interrupt pipeline.