diff options
author | Martin Matuska <mm@FreeBSD.org> | 2013-03-17 10:57:04 +0000 |
---|---|---|
committer | Martin Matuska <mm@FreeBSD.org> | 2013-03-17 10:57:04 +0000 |
commit | e2b4467975f1ff37b165a76e9ad46c81894e98a6 (patch) | |
tree | 40daf53539cb7fa1f1f9d3393c67ff6457a692bf /cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h | |
parent | 4f33cfb28418786e343f1ae8c9bd72c5dfb54d25 (diff) | |
download | src-e2b4467975f1ff37b165a76e9ad46c81894e98a6.tar.gz src-e2b4467975f1ff37b165a76e9ad46c81894e98a6.zip |
libzfs_core:
- provide complete backwards compatibility (old utility, new kernel)
- add zfs_cmd_t compatibility mapping in both directions
- determine ioctl address in zfs_ioctl_compat.c
Notes
Notes:
svn path=/projects/libzfs_core/; revision=248421
Diffstat (limited to 'cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h')
-rw-r--r-- | cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h index b6654b456c3a..881737d898a1 100644 --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h @@ -43,18 +43,18 @@ static int zfs_ioctl_version = 0; static __inline int zcmd_ioctl(int fd, int request, zfs_cmd_t *zc) { - unsigned long cmd; size_t oldsize, zfs_kernel_version_size, zfs_ioctl_version_size; int version, ret, cflag = ZFS_CMD_COMPAT_NONE; - cmd = _IOWR('Z', request, struct zfs_cmd); - zfs_ioctl_version_size = sizeof(zfs_ioctl_version); if (zfs_ioctl_version == 0) { sysctlbyname("vfs.zfs.version.ioctl", &zfs_ioctl_version, &zfs_ioctl_version_size, NULL, 0); } + 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 @@ -76,7 +76,7 @@ zcmd_ioctl(int fd, int request, zfs_cmd_t *zc) } oldsize = zc->zc_nvlist_dst_size; - ret = zcmd_ioctl_compat(fd, cmd, zc, cflag); + ret = zcmd_ioctl_compat(fd, request, zc, cflag); if (ret == 0 && oldsize < zc->zc_nvlist_dst_size) { ret = -1; @@ -85,7 +85,7 @@ zcmd_ioctl(int fd, int request, zfs_cmd_t *zc) return (ret); } -#define ioctl(fd, cmd, zc) zcmd_ioctl((fd), (cmd), (zc)) +#define ioctl(fd, ioc, zc) zcmd_ioctl((fd), (ioc), (zc)) #ifdef __cplusplus } |