Skip to content
Permalink
Browse files

Update ZFS_IOC offsets for FreeBSD

Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
  • Loading branch information
mattmacy committed Dec 2, 2019
1 parent 5142032 commit 3008812436deeb65c382f8d835a2d7c45f27dd6d
Showing with 24 additions and 7 deletions.
  1. +9 −4 include/sys/fs/zfs.h
  2. +15 −3 tests/zfs-tests/cmd/libzfs_input_check/libzfs_input_check.c
@@ -1192,7 +1192,11 @@ typedef enum zfs_ioc {
/*
* illumos - 81/128 numbers reserved.
*/
#ifdef __FreeBSD__
ZFS_IOC_FIRST = 0,
#else
ZFS_IOC_FIRST = ('Z' << 8),
#endif
ZFS_IOC = ZFS_IOC_FIRST,
ZFS_IOC_POOL_CREATE = ZFS_IOC_FIRST, /* 0x5a00 */
ZFS_IOC_POOL_DESTROY, /* 0x5a01 */
@@ -1282,16 +1286,17 @@ typedef enum zfs_ioc {
/*
* Linux - 3/64 numbers reserved.
*/
ZFS_IOC_LINUX = ('Z' << 8) + 0x80,
ZFS_IOC_LINUX = ZFS_IOC_FIRST + 0x80,
ZFS_IOC_EVENTS_NEXT, /* 0x5a81 */
ZFS_IOC_EVENTS_CLEAR, /* 0x5a82 */
ZFS_IOC_EVENTS_SEEK, /* 0x5a83 */

/*
* FreeBSD - 1/64 numbers reserved.
*/
ZFS_IOC_FREEBSD = ('Z' << 8) + 0xC0,

ZFS_IOC_FREEBSD = ZFS_IOC_FIRST + 0xc0,
ZFS_IOC_NEXTBOOT, /* 0xc1 */
ZFS_IOC_JAIL, /* 0xc2 */
ZFS_IOC_UNJAIL, /* 0xc3 */
ZFS_IOC_LAST
} zfs_ioc_t;

@@ -22,6 +22,7 @@
#include <string.h>
#include <strings.h>
#include <libzfs_core.h>
#include <libzutil.h>

#include <sys/nvpair.h>
#include <sys/zfs_ioctl.h>
@@ -103,6 +104,10 @@ static unsigned ioc_skip[] = {
ZFS_IOC_EVENTS_NEXT,
ZFS_IOC_EVENTS_CLEAR,
ZFS_IOC_EVENTS_SEEK,

ZFS_IOC_NEXTBOOT,
ZFS_IOC_JAIL,
ZFS_IOC_UNJAIL,
};


@@ -154,7 +159,7 @@ lzc_ioctl_run(zfs_ioc_t ioc, const char *name, nvlist_t *innvl, int expected)
zc.zc_nvlist_dst_size = MAX(size * 2, 128 * 1024);
zc.zc_nvlist_dst = (uint64_t)(uintptr_t)malloc(zc.zc_nvlist_dst_size);

if (ioctl(zfs_fd, ioc, &zc) != 0)
if (zfs_ioctl_fd(zfs_fd, ioc, &zc) != 0)
error = errno;

if (error != expected) {
@@ -685,7 +690,7 @@ zfs_destroy(const char *dataset)

(void) strlcpy(zc.zc_name, dataset, sizeof (zc.zc_name));
zc.zc_name[sizeof (zc.zc_name) - 1] = '\0';
err = ioctl(zfs_fd, ZFS_IOC_DESTROY, &zc);
err = zfs_ioctl_fd(zfs_fd, ZFS_IOC_DESTROY, &zc);

return (err == 0 ? 0 : errno);
}
@@ -858,7 +863,7 @@ zfs_ioc_input_tests(const char *pool)
if (ioc_tested[cmd])
continue;

if (ioctl(zfs_fd, ioc, &zc) != 0 &&
if (zfs_ioctl_fd(zfs_fd, ioc, &zc) != 0 &&
errno != ZFS_ERR_IOC_CMD_UNAVAIL) {
(void) fprintf(stderr, "cmd %d is missing a test case "
"(%d)\n", cmd, errno);
@@ -867,7 +872,11 @@ zfs_ioc_input_tests(const char *pool)
}

enum zfs_ioc_ref {
#ifdef __FreeBSD__
ZFS_IOC_BASE = 0,
#else
ZFS_IOC_BASE = ('Z' << 8),
#endif
LINUX_IOC_BASE = ZFS_IOC_BASE + 0x80,
FREEBSD_IOC_BASE = ZFS_IOC_BASE + 0xC0,
};
@@ -975,6 +984,9 @@ validate_ioc_values(void)
CHECK(LINUX_IOC_BASE + 1 == ZFS_IOC_EVENTS_NEXT);
CHECK(LINUX_IOC_BASE + 2 == ZFS_IOC_EVENTS_CLEAR);
CHECK(LINUX_IOC_BASE + 3 == ZFS_IOC_EVENTS_SEEK);
CHECK(FREEBSD_IOC_BASE + 1 == ZFS_IOC_NEXTBOOT);
CHECK(FREEBSD_IOC_BASE + 2 == ZFS_IOC_JAIL);
CHECK(FREEBSD_IOC_BASE + 3 == ZFS_IOC_UNJAIL);

#undef CHECK

0 comments on commit 3008812

Please sign in to comment.
You can’t perform that action at this time.