Recursive destroy of zfs snapshot fails on non-existing target snapshot
Prior to revision 11314 if a user was recursively destroying snapshots of a dataset the target dataset was not required to exist.
The zfs_secpolicy_destroy_snaps() function introduced the security check on the target dataset, so since then if the target dataset does not exist, the recursive destroy is not performed. Before 11314, only a delete permission check on the snapshot's master dataset was performed.
Steps to reproduce:
zfs create pool/a
zfs snapshot pool/a@s1
zfs destroy -r pool@s1
Therefore I suggest to fallback to the old security check, if the target snapshot does not exist and continue with the destroy.