The new OpenZFS initiative introduced "feature flags". A new pool version v5000 was introduced to mark this new features. Feature flags are mostly independent features that can be enabled or disabled on a zfs pool or filesystem. However, the pool will only be importable by zfs versions that also support all feature flags.
The main problem is, that you can't decide which feature flags will be activated and which won't.
An example. I've created a test pool with v28. When i upgrade this pool all feature flags are automatically enabled.
What i'm requesting is the following. I create a pool with v28. When i upgrade the pool to v5000, i just want to have an dummy v5000 pool. This practically means i have gained nothing except the pool version change. No feature flags will be enabled. This pool should be compatible with all zfs versions supporting feature flags.
If we look at this page http://open-zfs.org/wiki/Features we see that zfsonlinux and ZFS-OSX don't yet support the multi_vdev_crash_dump feature flag. So once i upgrade a zfs pool to v5000 in FreeBSD, i won't be able to import it on zfsonlinux and ZFS-OSX.
What i want to be able to do, is activate independent feature flags. In my case, i really want to use lz4_compress. This feature is supported in all zfs implementations. So when i upgrade, nothing is enabled, and afterwards i can enable just those feature i want to use to maintain the largest cross-compatibility possible.
Environment:
FreeBSD server.workgroup 10.0-STABLE FreeBSD 10.0-STABLE #0: Sun Apr 20 21:20:08 UTC 2014 jason@zfsguru:/usr/obj/tmpfs/2-source/sys/NEWCONS-OFED-POLLING-ALTQ amd64
How-To-Repeat:
Create a pool with v28.
Upgrade that pool to v5000.
Fix:
Not yet possible.
Patch attached with submission follows:
[root@server /home/ssh]# zpool status test
pool: test
state: ONLINE
status: The pool is formatted using a legacy on-disk format. The pool can
still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'. Once this is done, the
pool will no longer be accessible on software that does not support feature
flags.
scan: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gpt/test1 ONLINE 0 0 0
gpt/test2 ONLINE 0 0 0
errors: No known data errors
[root@server /home/ssh]# zpool upgrade test
This system supports ZFS pool feature flags.
Successfully upgraded 'test' from version 28 to feature flags.
Enabled the following features on 'test':
async_destroy
empty_bpobj
lz4_compress
multi_vdev_crash_dump
spacemap_histogram
enabled_txg
hole_birth
extensible_dataset
bookmarks
[root@server /home/ssh]# zpool status test
pool: test
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gpt/test1 ONLINE 0 0 0
gpt/test2 ONLINE 0 0 0
errors: No known data errors

This is not really a concern. Most all features can be in the 'enabled' state, and still be imported by older versions of ZFS. It is the 'active' state, that means one or more datasets is currently using that feature, and that a system requires that feature in order to read the data. Destroying the last dataset that is using that feature (for example, the skein hashing algo), will revert that feature to 'enabled', and the pool can be imported on a system without that feature.