aboutsummaryrefslogtreecommitdiff
path: root/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c
diff options
context:
space:
mode:
Diffstat (limited to 'cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c')
-rw-r--r--cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c
index 3c8119de5330..a3f6129876c9 100644
--- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c
+++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c
@@ -72,16 +72,23 @@ zcmd_ioctl(int fd, int request, zfs_cmd_t *zc)
if (zfs_ioctl_version == ZFS_IOCVER_UNDEF)
zfs_ioctl_version = get_zfs_ioctl_version();
- if (zfs_ioctl_version == ZFS_IOCVER_LZC)
- cflag = ZFS_CMD_COMPAT_LZC;
- else if (zfs_ioctl_version == ZFS_IOCVER_DEADMAN)
- cflag = ZFS_CMD_COMPAT_DEADMAN;
-
- /*
- * If vfs.zfs.version.ioctl is not defined, assume we have v28
- * compatible binaries and use vfs.zfs.version.spa to test for v15
- */
- if (zfs_ioctl_version < ZFS_IOCVER_DEADMAN) {
+ if (zfs_ioctl_version >= ZFS_IOCVER_DEADMAN) {
+ switch (zfs_ioctl_version) {
+ case ZFS_IOCVER_ZCMD:
+ cflag = ZFS_CMD_COMPAT_ZCMD;
+ break;
+ case ZFS_IOCVER_LZC:
+ cflag = ZFS_CMD_COMPAT_LZC;
+ break;
+ case ZFS_IOCVER_DEADMAN:
+ cflag = ZFS_CMD_COMPAT_DEADMAN;
+ break;
+ }
+ } else {
+ /*
+ * If vfs.zfs.version.ioctl is not defined, assume we have v28
+ * compatible binaries and use vfs.zfs.version.spa to test for v15
+ */
cflag = ZFS_CMD_COMPAT_V28;
if (zfs_spa_version < 0)