I'm not sure, but I'm not deeply familiar with this part of the code. In general, I think it's good to be able to induce all of the failure cases for all of the error handling code that's being added.
This can be time-consuming work, but I would argue that this is the file system -- anything less is an unacceptable risk. This quote from my boss comes to mind:
https://github.com/zfsonlinux/zfs/commits?author=sanjeevbage...
What do you suggest that we should have done?