1219089Spjd/* 2219089Spjd * CDDL HEADER START 3219089Spjd * 4219089Spjd * The contents of this file are subject to the terms of the 5219089Spjd * Common Development and Distribution License (the "License"). 6219089Spjd * You may not use this file except in compliance with the License. 7219089Spjd * 8219089Spjd * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9219089Spjd * or http://www.opensolaris.org/os/licensing. 10219089Spjd * See the License for the specific language governing permissions 11219089Spjd * and limitations under the License. 12219089Spjd * 13219089Spjd * When distributing Covered Code, include this CDDL HEADER in each 14219089Spjd * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15219089Spjd * If applicable, add the following below this CDDL HEADER, with the 16219089Spjd * fields enclosed by brackets "[]" replaced with your own identifying 17219089Spjd * information: Portions Copyright [yyyy] [name of copyright owner] 18219089Spjd * 19219089Spjd * CDDL HEADER END 20219089Spjd */ 21219089Spjd/* 22268075Sdelphij * Copyright 2014 Xin Li <delphij@FreeBSD.org>. All rights reserved. 23247540Smm * Copyright 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved. 24219089Spjd * Use is subject to license terms. 25219089Spjd */ 26219089Spjd 27219089Spjd#ifndef _SYS_ZFS_IOCTL_COMPAT_H 28219089Spjd#define _SYS_ZFS_IOCTL_COMPAT_H 29219089Spjd 30219089Spjd#include <sys/cred.h> 31219089Spjd#include <sys/dmu.h> 32219089Spjd#include <sys/zio.h> 33219089Spjd#include <sys/dsl_deleg.h> 34219089Spjd#include <sys/zfs_ioctl.h> 35219089Spjd 36219089Spjd#ifdef _KERNEL 37219089Spjd#include <sys/nvpair.h> 38219089Spjd#endif /* _KERNEL */ 39219089Spjd 40219089Spjd#ifdef __cplusplus 41219089Spjdextern "C" { 42219089Spjd#endif 43219089Spjd 44247540Smm/* 45247540Smm * Backwards ioctl compatibility 46247540Smm */ 47247540Smm 48247540Smm/* ioctl versions for vfs.zfs.version.ioctl */ 49248571Smm#define ZFS_IOCVER_UNDEF -1 50248571Smm#define ZFS_IOCVER_NONE 0 51247540Smm#define ZFS_IOCVER_DEADMAN 1 52248571Smm#define ZFS_IOCVER_LZC 2 53249319Smm#define ZFS_IOCVER_ZCMD 3 54268075Sdelphij#define ZFS_IOCVER_EDBP 4 55289362Smav#define ZFS_IOCVER_RESUME 5 56296563Smav#define ZFS_IOCVER_INLANES 6 57307101Smav#define ZFS_IOCVER_PAD 7 58307101Smav#define ZFS_IOCVER_CURRENT ZFS_IOCVER_PAD 59247540Smm 60247540Smm/* compatibility conversion flag */ 61247540Smm#define ZFS_CMD_COMPAT_NONE 0 62219089Spjd#define ZFS_CMD_COMPAT_V15 1 63247540Smm#define ZFS_CMD_COMPAT_V28 2 64248571Smm#define ZFS_CMD_COMPAT_DEADMAN 3 65249319Smm#define ZFS_CMD_COMPAT_LZC 4 66268075Sdelphij#define ZFS_CMD_COMPAT_ZCMD 5 67289362Smav#define ZFS_CMD_COMPAT_EDBP 6 68296563Smav#define ZFS_CMD_COMPAT_RESUME 7 69307101Smav#define ZFS_CMD_COMPAT_INLANES 8 70219089Spjd 71247540Smm#define ZFS_IOC_COMPAT_PASS 254 72247540Smm#define ZFS_IOC_COMPAT_FAIL 255 73219089Spjd 74248571Smm#define ZFS_IOCREQ(ioreq) ((ioreq) & 0xff) 75248571Smm 76249319Smmtypedef struct zfs_iocparm { 77249319Smm uint32_t zfs_ioctl_version; 78249319Smm uint64_t zfs_cmd; 79249319Smm uint64_t zfs_cmd_size; 80249319Smm} zfs_iocparm_t; 81249319Smm 82219089Spjdtypedef struct zinject_record_v15 { 83219089Spjd uint64_t zi_objset; 84219089Spjd uint64_t zi_object; 85219089Spjd uint64_t zi_start; 86219089Spjd uint64_t zi_end; 87219089Spjd uint64_t zi_guid; 88219089Spjd uint32_t zi_level; 89219089Spjd uint32_t zi_error; 90219089Spjd uint64_t zi_type; 91219089Spjd uint32_t zi_freq; 92219089Spjd uint32_t zi_failfast; 93219089Spjd} zinject_record_v15_t; 94219089Spjd 95219089Spjdtypedef struct zfs_cmd_v15 { 96219089Spjd char zc_name[MAXPATHLEN]; 97219089Spjd char zc_value[MAXPATHLEN]; 98219089Spjd char zc_string[MAXNAMELEN]; 99219089Spjd uint64_t zc_guid; 100219089Spjd uint64_t zc_nvlist_conf; /* really (char *) */ 101219089Spjd uint64_t zc_nvlist_conf_size; 102219089Spjd uint64_t zc_nvlist_src; /* really (char *) */ 103219089Spjd uint64_t zc_nvlist_src_size; 104219089Spjd uint64_t zc_nvlist_dst; /* really (char *) */ 105219089Spjd uint64_t zc_nvlist_dst_size; 106219089Spjd uint64_t zc_cookie; 107219089Spjd uint64_t zc_objset_type; 108219089Spjd uint64_t zc_perm_action; 109219089Spjd uint64_t zc_history; /* really (char *) */ 110219089Spjd uint64_t zc_history_len; 111219089Spjd uint64_t zc_history_offset; 112219089Spjd uint64_t zc_obj; 113219089Spjd zfs_share_t zc_share; 114219089Spjd uint64_t zc_jailid; 115219089Spjd dmu_objset_stats_t zc_objset_stats; 116219089Spjd struct drr_begin zc_begin_record; 117219089Spjd zinject_record_v15_t zc_inject_record; 118219089Spjd} zfs_cmd_v15_t; 119219089Spjd 120247540Smmtypedef struct zinject_record_v28 { 121247540Smm uint64_t zi_objset; 122247540Smm uint64_t zi_object; 123247540Smm uint64_t zi_start; 124247540Smm uint64_t zi_end; 125247540Smm uint64_t zi_guid; 126247540Smm uint32_t zi_level; 127247540Smm uint32_t zi_error; 128247540Smm uint64_t zi_type; 129247540Smm uint32_t zi_freq; 130247540Smm uint32_t zi_failfast; 131247540Smm char zi_func[MAXNAMELEN]; 132247540Smm uint32_t zi_iotype; 133247540Smm int32_t zi_duration; 134247540Smm uint64_t zi_timer; 135247540Smm} zinject_record_v28_t; 136247540Smm 137247540Smmtypedef struct zfs_cmd_v28 { 138247540Smm char zc_name[MAXPATHLEN]; 139247540Smm char zc_value[MAXPATHLEN * 2]; 140247540Smm char zc_string[MAXNAMELEN]; 141247540Smm char zc_top_ds[MAXPATHLEN]; 142247540Smm uint64_t zc_guid; 143247540Smm uint64_t zc_nvlist_conf; /* really (char *) */ 144247540Smm uint64_t zc_nvlist_conf_size; 145247540Smm uint64_t zc_nvlist_src; /* really (char *) */ 146247540Smm uint64_t zc_nvlist_src_size; 147247540Smm uint64_t zc_nvlist_dst; /* really (char *) */ 148247540Smm uint64_t zc_nvlist_dst_size; 149247540Smm uint64_t zc_cookie; 150247540Smm uint64_t zc_objset_type; 151247540Smm uint64_t zc_perm_action; 152247540Smm uint64_t zc_history; /* really (char *) */ 153247540Smm uint64_t zc_history_len; 154247540Smm uint64_t zc_history_offset; 155247540Smm uint64_t zc_obj; 156247540Smm uint64_t zc_iflags; /* internal to zfs(7fs) */ 157247540Smm zfs_share_t zc_share; 158247540Smm uint64_t zc_jailid; 159247540Smm dmu_objset_stats_t zc_objset_stats; 160247540Smm struct drr_begin zc_begin_record; 161247540Smm zinject_record_v28_t zc_inject_record; 162247540Smm boolean_t zc_defer_destroy; 163247540Smm boolean_t zc_temphold; 164247540Smm uint64_t zc_action_handle; 165247540Smm int zc_cleanup_fd; 166247540Smm uint8_t zc_simple; 167247540Smm uint8_t zc_pad[3]; /* alignment */ 168247540Smm uint64_t zc_sendobj; 169247540Smm uint64_t zc_fromobj; 170247540Smm uint64_t zc_createtxg; 171247540Smm zfs_stat_t zc_stat; 172247540Smm} zfs_cmd_v28_t; 173247540Smm 174296563Smavtypedef struct zinject_record_deadman { 175296563Smav uint64_t zi_objset; 176296563Smav uint64_t zi_object; 177296563Smav uint64_t zi_start; 178296563Smav uint64_t zi_end; 179296563Smav uint64_t zi_guid; 180296563Smav uint32_t zi_level; 181296563Smav uint32_t zi_error; 182296563Smav uint64_t zi_type; 183296563Smav uint32_t zi_freq; 184296563Smav uint32_t zi_failfast; 185296563Smav char zi_func[MAXNAMELEN]; 186296563Smav uint32_t zi_iotype; 187296563Smav int32_t zi_duration; 188296563Smav uint64_t zi_timer; 189296563Smav uint32_t zi_cmd; 190296563Smav uint32_t zi_pad; 191296563Smav} zinject_record_deadman_t; 192296563Smav 193248571Smmtypedef struct zfs_cmd_deadman { 194248571Smm char zc_name[MAXPATHLEN]; 195248571Smm char zc_value[MAXPATHLEN * 2]; 196248571Smm char zc_string[MAXNAMELEN]; 197248571Smm char zc_top_ds[MAXPATHLEN]; 198248571Smm uint64_t zc_guid; 199248571Smm uint64_t zc_nvlist_conf; /* really (char *) */ 200248571Smm uint64_t zc_nvlist_conf_size; 201248571Smm uint64_t zc_nvlist_src; /* really (char *) */ 202248571Smm uint64_t zc_nvlist_src_size; 203248571Smm uint64_t zc_nvlist_dst; /* really (char *) */ 204248571Smm uint64_t zc_nvlist_dst_size; 205248571Smm uint64_t zc_cookie; 206248571Smm uint64_t zc_objset_type; 207248571Smm uint64_t zc_perm_action; 208248571Smm uint64_t zc_history; /* really (char *) */ 209248571Smm uint64_t zc_history_len; 210248571Smm uint64_t zc_history_offset; 211248571Smm uint64_t zc_obj; 212248571Smm uint64_t zc_iflags; /* internal to zfs(7fs) */ 213248571Smm zfs_share_t zc_share; 214248571Smm uint64_t zc_jailid; 215248571Smm dmu_objset_stats_t zc_objset_stats; 216248571Smm struct drr_begin zc_begin_record; 217248571Smm /* zc_inject_record doesn't change in libzfs_core */ 218296563Smav zinject_record_deadman_t zc_inject_record; 219248571Smm boolean_t zc_defer_destroy; 220248571Smm boolean_t zc_temphold; 221248571Smm uint64_t zc_action_handle; 222248571Smm int zc_cleanup_fd; 223248571Smm uint8_t zc_simple; 224248571Smm uint8_t zc_pad[3]; /* alignment */ 225248571Smm uint64_t zc_sendobj; 226248571Smm uint64_t zc_fromobj; 227248571Smm uint64_t zc_createtxg; 228248571Smm zfs_stat_t zc_stat; 229248571Smm} zfs_cmd_deadman_t; 230248571Smm 231268075Sdelphijtypedef struct zfs_cmd_zcmd { 232268075Sdelphij char zc_name[MAXPATHLEN]; /* name of pool or dataset */ 233268075Sdelphij uint64_t zc_nvlist_src; /* really (char *) */ 234268075Sdelphij uint64_t zc_nvlist_src_size; 235268075Sdelphij uint64_t zc_nvlist_dst; /* really (char *) */ 236268075Sdelphij uint64_t zc_nvlist_dst_size; 237268075Sdelphij boolean_t zc_nvlist_dst_filled; /* put an nvlist in dst? */ 238268075Sdelphij int zc_pad2; 239268075Sdelphij 240268075Sdelphij /* 241268075Sdelphij * The following members are for legacy ioctls which haven't been 242268075Sdelphij * converted to the new method. 243268075Sdelphij */ 244268075Sdelphij uint64_t zc_history; /* really (char *) */ 245268075Sdelphij char zc_value[MAXPATHLEN * 2]; 246268075Sdelphij char zc_string[MAXNAMELEN]; 247268075Sdelphij uint64_t zc_guid; 248268075Sdelphij uint64_t zc_nvlist_conf; /* really (char *) */ 249268075Sdelphij uint64_t zc_nvlist_conf_size; 250268075Sdelphij uint64_t zc_cookie; 251268075Sdelphij uint64_t zc_objset_type; 252268075Sdelphij uint64_t zc_perm_action; 253268075Sdelphij uint64_t zc_history_len; 254268075Sdelphij uint64_t zc_history_offset; 255268075Sdelphij uint64_t zc_obj; 256268075Sdelphij uint64_t zc_iflags; /* internal to zfs(7fs) */ 257268075Sdelphij zfs_share_t zc_share; 258268075Sdelphij uint64_t zc_jailid; 259268075Sdelphij dmu_objset_stats_t zc_objset_stats; 260268075Sdelphij struct drr_begin zc_begin_record; 261296563Smav zinject_record_deadman_t zc_inject_record; 262268075Sdelphij boolean_t zc_defer_destroy; 263268075Sdelphij boolean_t zc_temphold; 264268075Sdelphij uint64_t zc_action_handle; 265268075Sdelphij int zc_cleanup_fd; 266268075Sdelphij uint8_t zc_simple; 267268075Sdelphij uint8_t zc_pad[3]; /* alignment */ 268268075Sdelphij uint64_t zc_sendobj; 269268075Sdelphij uint64_t zc_fromobj; 270268075Sdelphij uint64_t zc_createtxg; 271268075Sdelphij zfs_stat_t zc_stat; 272268075Sdelphij} zfs_cmd_zcmd_t; 273268075Sdelphij 274289362Smavtypedef struct zfs_cmd_edbp { 275289362Smav char zc_name[MAXPATHLEN]; /* name of pool or dataset */ 276289362Smav uint64_t zc_nvlist_src; /* really (char *) */ 277289362Smav uint64_t zc_nvlist_src_size; 278289362Smav uint64_t zc_nvlist_dst; /* really (char *) */ 279289362Smav uint64_t zc_nvlist_dst_size; 280289362Smav boolean_t zc_nvlist_dst_filled; /* put an nvlist in dst? */ 281289362Smav int zc_pad2; 282289362Smav 283289362Smav /* 284289362Smav * The following members are for legacy ioctls which haven't been 285289362Smav * converted to the new method. 286289362Smav */ 287289362Smav uint64_t zc_history; /* really (char *) */ 288289362Smav char zc_value[MAXPATHLEN * 2]; 289289362Smav char zc_string[MAXNAMELEN]; 290289362Smav uint64_t zc_guid; 291289362Smav uint64_t zc_nvlist_conf; /* really (char *) */ 292289362Smav uint64_t zc_nvlist_conf_size; 293289362Smav uint64_t zc_cookie; 294289362Smav uint64_t zc_objset_type; 295289362Smav uint64_t zc_perm_action; 296289362Smav uint64_t zc_history_len; 297289362Smav uint64_t zc_history_offset; 298289362Smav uint64_t zc_obj; 299289362Smav uint64_t zc_iflags; /* internal to zfs(7fs) */ 300289362Smav zfs_share_t zc_share; 301289362Smav uint64_t zc_jailid; 302289362Smav dmu_objset_stats_t zc_objset_stats; 303289362Smav struct drr_begin zc_begin_record; 304296563Smav zinject_record_deadman_t zc_inject_record; 305289362Smav uint32_t zc_defer_destroy; 306289362Smav uint32_t zc_flags; 307289362Smav uint64_t zc_action_handle; 308289362Smav int zc_cleanup_fd; 309289362Smav uint8_t zc_simple; 310289362Smav uint8_t zc_pad[3]; /* alignment */ 311289362Smav uint64_t zc_sendobj; 312289362Smav uint64_t zc_fromobj; 313289362Smav uint64_t zc_createtxg; 314289362Smav zfs_stat_t zc_stat; 315289362Smav} zfs_cmd_edbp_t; 316289362Smav 317296563Smavtypedef struct zfs_cmd_resume { 318296563Smav char zc_name[MAXPATHLEN]; /* name of pool or dataset */ 319296563Smav uint64_t zc_nvlist_src; /* really (char *) */ 320296563Smav uint64_t zc_nvlist_src_size; 321296563Smav uint64_t zc_nvlist_dst; /* really (char *) */ 322296563Smav uint64_t zc_nvlist_dst_size; 323296563Smav boolean_t zc_nvlist_dst_filled; /* put an nvlist in dst? */ 324296563Smav int zc_pad2; 325296563Smav 326296563Smav /* 327296563Smav * The following members are for legacy ioctls which haven't been 328296563Smav * converted to the new method. 329296563Smav */ 330296563Smav uint64_t zc_history; /* really (char *) */ 331296563Smav char zc_value[MAXPATHLEN * 2]; 332296563Smav char zc_string[MAXNAMELEN]; 333296563Smav uint64_t zc_guid; 334296563Smav uint64_t zc_nvlist_conf; /* really (char *) */ 335296563Smav uint64_t zc_nvlist_conf_size; 336296563Smav uint64_t zc_cookie; 337296563Smav uint64_t zc_objset_type; 338296563Smav uint64_t zc_perm_action; 339296563Smav uint64_t zc_history_len; 340296563Smav uint64_t zc_history_offset; 341296563Smav uint64_t zc_obj; 342296563Smav uint64_t zc_iflags; /* internal to zfs(7fs) */ 343296563Smav zfs_share_t zc_share; 344296563Smav uint64_t zc_jailid; 345296563Smav dmu_objset_stats_t zc_objset_stats; 346296563Smav dmu_replay_record_t zc_begin_record; 347296563Smav zinject_record_deadman_t zc_inject_record; 348296563Smav uint32_t zc_defer_destroy; 349296563Smav uint32_t zc_flags; 350296563Smav uint64_t zc_action_handle; 351296563Smav int zc_cleanup_fd; 352296563Smav uint8_t zc_simple; 353296563Smav boolean_t zc_resumable; 354296563Smav uint64_t zc_sendobj; 355296563Smav uint64_t zc_fromobj; 356296563Smav uint64_t zc_createtxg; 357296563Smav zfs_stat_t zc_stat; 358296563Smav} zfs_cmd_resume_t; 359296563Smav 360307101Smavtypedef struct zfs_cmd_inlanes { 361307101Smav char zc_name[MAXPATHLEN]; /* name of pool or dataset */ 362307101Smav uint64_t zc_nvlist_src; /* really (char *) */ 363307101Smav uint64_t zc_nvlist_src_size; 364307101Smav uint64_t zc_nvlist_dst; /* really (char *) */ 365307101Smav uint64_t zc_nvlist_dst_size; 366307101Smav boolean_t zc_nvlist_dst_filled; /* put an nvlist in dst? */ 367307101Smav int zc_pad2; 368307101Smav 369307101Smav /* 370307101Smav * The following members are for legacy ioctls which haven't been 371307101Smav * converted to the new method. 372307101Smav */ 373307101Smav uint64_t zc_history; /* really (char *) */ 374307101Smav char zc_value[MAXPATHLEN * 2]; 375307101Smav char zc_string[MAXNAMELEN]; 376307101Smav uint64_t zc_guid; 377307101Smav uint64_t zc_nvlist_conf; /* really (char *) */ 378307101Smav uint64_t zc_nvlist_conf_size; 379307101Smav uint64_t zc_cookie; 380307101Smav uint64_t zc_objset_type; 381307101Smav uint64_t zc_perm_action; 382307101Smav uint64_t zc_history_len; 383307101Smav uint64_t zc_history_offset; 384307101Smav uint64_t zc_obj; 385307101Smav uint64_t zc_iflags; /* internal to zfs(7fs) */ 386307101Smav zfs_share_t zc_share; 387307101Smav uint64_t zc_jailid; 388307101Smav dmu_objset_stats_t zc_objset_stats; 389307101Smav dmu_replay_record_t zc_begin_record; 390307101Smav zinject_record_t zc_inject_record; 391307101Smav uint32_t zc_defer_destroy; 392307101Smav uint32_t zc_flags; 393307101Smav uint64_t zc_action_handle; 394307101Smav int zc_cleanup_fd; 395307101Smav uint8_t zc_simple; 396307101Smav boolean_t zc_resumable; 397307101Smav uint64_t zc_sendobj; 398307101Smav uint64_t zc_fromobj; 399307101Smav uint64_t zc_createtxg; 400307101Smav zfs_stat_t zc_stat; 401307101Smav} zfs_cmd_inlanes_t; 402307101Smav 403219089Spjd#ifdef _KERNEL 404219089Spjdunsigned static long zfs_ioctl_v15_to_v28[] = { 405219089Spjd 0, /* 0 ZFS_IOC_POOL_CREATE */ 406219089Spjd 1, /* 1 ZFS_IOC_POOL_DESTROY */ 407219089Spjd 2, /* 2 ZFS_IOC_POOL_IMPORT */ 408219089Spjd 3, /* 3 ZFS_IOC_POOL_EXPORT */ 409219089Spjd 4, /* 4 ZFS_IOC_POOL_CONFIGS */ 410219089Spjd 5, /* 5 ZFS_IOC_POOL_STATS */ 411219089Spjd 6, /* 6 ZFS_IOC_POOL_TRYIMPORT */ 412219089Spjd 7, /* 7 ZFS_IOC_POOL_SCRUB */ 413219089Spjd 8, /* 8 ZFS_IOC_POOL_FREEZE */ 414219089Spjd 9, /* 9 ZFS_IOC_POOL_UPGRADE */ 415219089Spjd 10, /* 10 ZFS_IOC_POOL_GET_HISTORY */ 416219089Spjd 11, /* 11 ZFS_IOC_VDEV_ADD */ 417219089Spjd 12, /* 12 ZFS_IOC_VDEV_REMOVE */ 418219089Spjd 13, /* 13 ZFS_IOC_VDEV_SET_STATE */ 419219089Spjd 14, /* 14 ZFS_IOC_VDEV_ATTACH */ 420219089Spjd 15, /* 15 ZFS_IOC_VDEV_DETACH */ 421219089Spjd 16, /* 16 ZFS_IOC_VDEV_SETPATH */ 422219089Spjd 18, /* 17 ZFS_IOC_OBJSET_STATS */ 423219089Spjd 19, /* 18 ZFS_IOC_OBJSET_ZPLPROPS */ 424219089Spjd 20, /* 19 ZFS_IOC_DATASET_LIST_NEXT */ 425219089Spjd 21, /* 20 ZFS_IOC_SNAPSHOT_LIST_NEXT */ 426219089Spjd 22, /* 21 ZFS_IOC_SET_PROP */ 427219089Spjd ZFS_IOC_COMPAT_PASS, /* 22 ZFS_IOC_CREATE_MINOR */ 428219089Spjd ZFS_IOC_COMPAT_PASS, /* 23 ZFS_IOC_REMOVE_MINOR */ 429219089Spjd 23, /* 24 ZFS_IOC_CREATE */ 430219089Spjd 24, /* 25 ZFS_IOC_DESTROY */ 431219089Spjd 25, /* 26 ZFS_IOC_ROLLBACK */ 432219089Spjd 26, /* 27 ZFS_IOC_RENAME */ 433219089Spjd 27, /* 28 ZFS_IOC_RECV */ 434219089Spjd 28, /* 29 ZFS_IOC_SEND */ 435219089Spjd 29, /* 30 ZFS_IOC_INJECT_FAULT */ 436219089Spjd 30, /* 31 ZFS_IOC_CLEAR_FAULT */ 437219089Spjd 31, /* 32 ZFS_IOC_INJECT_LIST_NEXT */ 438219089Spjd 32, /* 33 ZFS_IOC_ERROR_LOG */ 439219089Spjd 33, /* 34 ZFS_IOC_CLEAR */ 440219089Spjd 34, /* 35 ZFS_IOC_PROMOTE */ 441219089Spjd 35, /* 36 ZFS_IOC_DESTROY_SNAPS */ 442219089Spjd 36, /* 37 ZFS_IOC_SNAPSHOT */ 443219089Spjd 37, /* 38 ZFS_IOC_DSOBJ_TO_DSNAME */ 444219089Spjd 38, /* 39 ZFS_IOC_OBJ_TO_PATH */ 445219089Spjd 39, /* 40 ZFS_IOC_POOL_SET_PROPS */ 446219089Spjd 40, /* 41 ZFS_IOC_POOL_GET_PROPS */ 447219089Spjd 41, /* 42 ZFS_IOC_SET_FSACL */ 448219089Spjd 42, /* 43 ZFS_IOC_GET_FSACL */ 449219089Spjd ZFS_IOC_COMPAT_PASS, /* 44 ZFS_IOC_ISCSI_PERM_CHECK */ 450219089Spjd 43, /* 45 ZFS_IOC_SHARE */ 451219089Spjd 44, /* 46 ZFS_IOC_IHNERIT_PROP */ 452219089Spjd 58, /* 47 ZFS_IOC_JAIL */ 453219089Spjd 59, /* 48 ZFS_IOC_UNJAIL */ 454219089Spjd 45, /* 49 ZFS_IOC_SMB_ACL */ 455219089Spjd 46, /* 50 ZFS_IOC_USERSPACE_ONE */ 456219089Spjd 47, /* 51 ZFS_IOC_USERSPACE_MANY */ 457219089Spjd 48, /* 52 ZFS_IOC_USERSPACE_UPGRADE */ 458219089Spjd 17, /* 53 ZFS_IOC_SETFRU */ 459219089Spjd}; 460219089Spjd 461219089Spjd#else /* KERNEL */ 462219089Spjdunsigned static long zfs_ioctl_v28_to_v15[] = { 463219089Spjd 0, /* 0 ZFS_IOC_POOL_CREATE */ 464219089Spjd 1, /* 1 ZFS_IOC_POOL_DESTROY */ 465219089Spjd 2, /* 2 ZFS_IOC_POOL_IMPORT */ 466219089Spjd 3, /* 3 ZFS_IOC_POOL_EXPORT */ 467219089Spjd 4, /* 4 ZFS_IOC_POOL_CONFIGS */ 468219089Spjd 5, /* 5 ZFS_IOC_POOL_STATS */ 469219089Spjd 6, /* 6 ZFS_IOC_POOL_TRYIMPORT */ 470219089Spjd 7, /* 7 ZFS_IOC_POOL_SCAN */ 471219089Spjd 8, /* 8 ZFS_IOC_POOL_FREEZE */ 472219089Spjd 9, /* 9 ZFS_IOC_POOL_UPGRADE */ 473219089Spjd 10, /* 10 ZFS_IOC_POOL_GET_HISTORY */ 474219089Spjd 11, /* 11 ZFS_IOC_VDEV_ADD */ 475219089Spjd 12, /* 12 ZFS_IOC_VDEV_REMOVE */ 476219089Spjd 13, /* 13 ZFS_IOC_VDEV_SET_STATE */ 477219089Spjd 14, /* 14 ZFS_IOC_VDEV_ATTACH */ 478219089Spjd 15, /* 15 ZFS_IOC_VDEV_DETACH */ 479219089Spjd 16, /* 16 ZFS_IOC_VDEV_SETPATH */ 480219089Spjd 53, /* 17 ZFS_IOC_VDEV_SETFRU */ 481219089Spjd 17, /* 18 ZFS_IOC_OBJSET_STATS */ 482219089Spjd 18, /* 19 ZFS_IOC_OBJSET_ZPLPROPS */ 483219089Spjd 19, /* 20 ZFS_IOC_DATASET_LIST_NEXT */ 484219089Spjd 20, /* 21 ZFS_IOC_SNAPSHOT_LIST_NEXT */ 485219089Spjd 21, /* 22 ZFS_IOC_SET_PROP */ 486219089Spjd 24, /* 23 ZFS_IOC_CREATE */ 487219089Spjd 25, /* 24 ZFS_IOC_DESTROY */ 488219089Spjd 26, /* 25 ZFS_IOC_ROLLBACK */ 489219089Spjd 27, /* 26 ZFS_IOC_RENAME */ 490219089Spjd 28, /* 27 ZFS_IOC_RECV */ 491219089Spjd 29, /* 28 ZFS_IOC_SEND */ 492219089Spjd 30, /* 39 ZFS_IOC_INJECT_FAULT */ 493219089Spjd 31, /* 30 ZFS_IOC_CLEAR_FAULT */ 494219089Spjd 32, /* 31 ZFS_IOC_INJECT_LIST_NEXT */ 495219089Spjd 33, /* 32 ZFS_IOC_ERROR_LOG */ 496219089Spjd 34, /* 33 ZFS_IOC_CLEAR */ 497219089Spjd 35, /* 34 ZFS_IOC_PROMOTE */ 498219089Spjd 36, /* 35 ZFS_IOC_DESTROY_SNAPS */ 499219089Spjd 37, /* 36 ZFS_IOC_SNAPSHOT */ 500219089Spjd 38, /* 37 ZFS_IOC_DSOBJ_TO_DSNAME */ 501219089Spjd 39, /* 38 ZFS_IOC_OBJ_TO_PATH */ 502219089Spjd 40, /* 39 ZFS_IOC_POOL_SET_PROPS */ 503219089Spjd 41, /* 40 ZFS_IOC_POOL_GET_PROPS */ 504219089Spjd 42, /* 41 ZFS_IOC_SET_FSACL */ 505219089Spjd 43, /* 42 ZFS_IOC_GET_FSACL */ 506219089Spjd 45, /* 43 ZFS_IOC_SHARE */ 507219089Spjd 46, /* 44 ZFS_IOC_IHNERIT_PROP */ 508219089Spjd 49, /* 45 ZFS_IOC_SMB_ACL */ 509219089Spjd 50, /* 46 ZFS_IOC_USERSPACE_ONE */ 510219089Spjd 51, /* 47 ZFS_IOC_USERSPACE_MANY */ 511219089Spjd 52, /* 48 ZFS_IOC_USERSPACE_UPGRADE */ 512219089Spjd ZFS_IOC_COMPAT_FAIL, /* 49 ZFS_IOC_HOLD */ 513219089Spjd ZFS_IOC_COMPAT_FAIL, /* 50 ZFS_IOC_RELEASE */ 514219089Spjd ZFS_IOC_COMPAT_FAIL, /* 51 ZFS_IOC_GET_HOLDS */ 515219089Spjd ZFS_IOC_COMPAT_FAIL, /* 52 ZFS_IOC_OBJSET_RECVD_PROPS */ 516219089Spjd ZFS_IOC_COMPAT_FAIL, /* 53 ZFS_IOC_VDEV_SPLIT */ 517219089Spjd ZFS_IOC_COMPAT_FAIL, /* 54 ZFS_IOC_NEXT_OBJ */ 518219089Spjd ZFS_IOC_COMPAT_FAIL, /* 55 ZFS_IOC_DIFF */ 519219089Spjd ZFS_IOC_COMPAT_FAIL, /* 56 ZFS_IOC_TMP_SNAPSHOT */ 520219089Spjd ZFS_IOC_COMPAT_FAIL, /* 57 ZFS_IOC_OBJ_TO_STATS */ 521219089Spjd 47, /* 58 ZFS_IOC_JAIL */ 522219089Spjd 48, /* 59 ZFS_IOC_UNJAIL */ 523219089Spjd}; 524219089Spjd#endif /* ! _KERNEL */ 525219089Spjd 526219089Spjd#ifdef _KERNEL 527248571Smmint zfs_ioctl_compat_pre(zfs_cmd_t *, int *, const int); 528219089Spjdvoid zfs_ioctl_compat_post(zfs_cmd_t *, const int, const int); 529248571Smmnvlist_t *zfs_ioctl_compat_innvl(zfs_cmd_t *, nvlist_t *, const int, 530248571Smm const int); 531248571Smmnvlist_t *zfs_ioctl_compat_outnvl(zfs_cmd_t *, nvlist_t *, const int, 532248571Smm const int); 533219089Spjd#else 534248571Smmint zcmd_ioctl_compat(int, int, zfs_cmd_t *, const int); 535219089Spjd#endif /* _KERNEL */ 536219089Spjdvoid zfs_cmd_compat_get(zfs_cmd_t *, caddr_t, const int); 537248571Smmvoid zfs_cmd_compat_put(zfs_cmd_t *, caddr_t, const int, const int); 538219089Spjd 539219089Spjd#ifdef __cplusplus 540219089Spjd} 541219089Spjd#endif 542219089Spjd 543219089Spjd#endif /* _SYS_ZFS_IOCTL_COMPAT_H */ 544