I check out the zfsonlinux code from github:
# git clone https://github.com/zfsonlinux/zfs
I get the "master" branch (confirmed with "git branch"). This is, I believe, not any sort of a "tag"ged release but represents the current state of the code as it is being evolved. (Correct me if I'm wrong.)
This code contains support for encryption, which I can verify by looking in the repository files of the man page zfs/man/man5/zpool-features.4 .
The repository has quite a number of tags in it, as show with "git tag". Here are the last ones in the list:
... zfs-0.7.0 zfs-0.7.0-rc1 zfs-0.7.0-rc2 zfs-0.7.0-rc3 zfs-0.7.0-rc4 zfs-0.7.0-rc5 zfs-0.7.1 zfs-0.7.2 zfs-0.7.3 zfs-0.7.4
If I "git checkout tags/" on any of these tags, and look at the code, they don't contain the encryption features. This has me confused. How are tags created (like zfs-0.7.4) that don't contain the encryption code, when the encryption code was put in master branch quite a long time ago (based on review of "git log" on master)?
It seems like a bad idea for the tagged releases to be based on a different code base than the evolving master branch but I suppose that's possible. Is that what is happening? I don't see a mechanism to select certain features of a master branch to be put into a tagged "release". Quite possibly I am thinking in a non-git paradigm.
Encryption was added by commit b52563034 on branch master AFTER release 0.7.0.
Recent tags are just bugfixes of 0.7.X and are created on branch zfs-0.7-release, which diverged from master since commit of release 0.7.0 and does not contains commits created on master since the branch creation.
So encryption will be available in next major release (0.8.0 I guess).