The existing jail start hooks are not sufficient to cover all edge cases. This changes introduce the exec.started hook that is executed on the host after jail start right before exec.start is run inside the jail.
A use-case scenario: A ZFS dataset can be shared with a jail only after it was already started. Without native integration of zfs jail into the jail command or a hook as proposed here, there is no way to make the dataset(s) available to the jail before its services are started. When it comes to non-persistent jails not even the exec.poststart hook can be used to delay the command execution until the ZFS shares are available.