1fa9e4066Sahrens /* 2fa9e4066Sahrens * CDDL HEADER START 3fa9e4066Sahrens * 4fa9e4066Sahrens * The contents of this file are subject to the terms of the 5ea8dc4b6Seschrock * Common Development and Distribution License (the "License"). 6ea8dc4b6Seschrock * You may not use this file except in compliance with the License. 7fa9e4066Sahrens * 8fa9e4066Sahrens * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9fa9e4066Sahrens * or http://www.opensolaris.org/os/licensing. 10fa9e4066Sahrens * See the License for the specific language governing permissions 11fa9e4066Sahrens * and limitations under the License. 12fa9e4066Sahrens * 13fa9e4066Sahrens * When distributing Covered Code, include this CDDL HEADER in each 14fa9e4066Sahrens * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15fa9e4066Sahrens * If applicable, add the following below this CDDL HEADER, with the 16fa9e4066Sahrens * fields enclosed by brackets "[]" replaced with your own identifying 17fa9e4066Sahrens * information: Portions Copyright [yyyy] [name of copyright owner] 18fa9e4066Sahrens * 19fa9e4066Sahrens * CDDL HEADER END 20fa9e4066Sahrens */ 21fa9e4066Sahrens /* 226b90ca48Slling * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 23fa9e4066Sahrens * Use is subject to license terms. 24fa9e4066Sahrens */ 25fa9e4066Sahrens 26fa9e4066Sahrens #ifndef _SYS_ZFS_IOCTL_H 27fa9e4066Sahrens #define _SYS_ZFS_IOCTL_H 28fa9e4066Sahrens 29fa9e4066Sahrens #pragma ident "%Z%%M% %I% %E% SMI" 30fa9e4066Sahrens 31fa9e4066Sahrens #include <sys/cred.h> 32fa9e4066Sahrens #include <sys/dmu.h> 33ea8dc4b6Seschrock #include <sys/zio.h> 34fa9e4066Sahrens 35fa9e4066Sahrens #ifdef __cplusplus 36fa9e4066Sahrens extern "C" { 37fa9e4066Sahrens #endif 38fa9e4066Sahrens 39fa9e4066Sahrens /* 40fa9e4066Sahrens * Property values for snapdir 41fa9e4066Sahrens */ 42a0965f35Sbonwick #define ZFS_SNAPDIR_HIDDEN 0 43a0965f35Sbonwick #define ZFS_SNAPDIR_VISIBLE 1 44fa9e4066Sahrens 45fa9e4066Sahrens #define DMU_BACKUP_VERSION (1ULL) 46fa9e4066Sahrens #define DMU_BACKUP_MAGIC 0x2F5bacbacULL 47fa9e4066Sahrens 48fa9e4066Sahrens /* 49fa9e4066Sahrens * zfs ioctl command structure 50fa9e4066Sahrens */ 51fa9e4066Sahrens typedef struct dmu_replay_record { 52fa9e4066Sahrens enum { 53fa9e4066Sahrens DRR_BEGIN, DRR_OBJECT, DRR_FREEOBJECTS, 54fa9e4066Sahrens DRR_WRITE, DRR_FREE, DRR_END, 55fa9e4066Sahrens } drr_type; 56fa9e4066Sahrens uint32_t drr_pad; 57fa9e4066Sahrens union { 58fa9e4066Sahrens struct drr_begin { 59fa9e4066Sahrens uint64_t drr_magic; 60fa9e4066Sahrens uint64_t drr_version; 61fa9e4066Sahrens uint64_t drr_creation_time; 62fa9e4066Sahrens dmu_objset_type_t drr_type; 63fa9e4066Sahrens uint32_t drr_pad; 64fa9e4066Sahrens uint64_t drr_toguid; 65fa9e4066Sahrens uint64_t drr_fromguid; 66fa9e4066Sahrens char drr_toname[MAXNAMELEN]; 67fa9e4066Sahrens } drr_begin; 68fa9e4066Sahrens struct drr_end { 69ea8dc4b6Seschrock zio_cksum_t drr_checksum; 70fa9e4066Sahrens } drr_end; 71fa9e4066Sahrens struct drr_object { 72fa9e4066Sahrens uint64_t drr_object; 73fa9e4066Sahrens dmu_object_type_t drr_type; 74fa9e4066Sahrens dmu_object_type_t drr_bonustype; 75fa9e4066Sahrens uint32_t drr_blksz; 76fa9e4066Sahrens uint32_t drr_bonuslen; 77fa9e4066Sahrens uint8_t drr_checksum; 78fa9e4066Sahrens uint8_t drr_compress; 79fa9e4066Sahrens uint8_t drr_pad[6]; 80*a2eea2e1Sahrens /* bonus content follows */ 81fa9e4066Sahrens } drr_object; 82fa9e4066Sahrens struct drr_freeobjects { 83fa9e4066Sahrens uint64_t drr_firstobj; 84fa9e4066Sahrens uint64_t drr_numobjs; 85fa9e4066Sahrens } drr_freeobjects; 86fa9e4066Sahrens struct drr_write { 87fa9e4066Sahrens uint64_t drr_object; 88fa9e4066Sahrens dmu_object_type_t drr_type; 89fa9e4066Sahrens uint32_t drr_pad; 90fa9e4066Sahrens uint64_t drr_offset; 91fa9e4066Sahrens uint64_t drr_length; 92*a2eea2e1Sahrens /* content follows */ 93fa9e4066Sahrens } drr_write; 94fa9e4066Sahrens struct drr_free { 95fa9e4066Sahrens uint64_t drr_object; 96fa9e4066Sahrens uint64_t drr_offset; 97fa9e4066Sahrens uint64_t drr_length; 98fa9e4066Sahrens } drr_free; 99fa9e4066Sahrens } drr_u; 100fa9e4066Sahrens } dmu_replay_record_t; 101fa9e4066Sahrens 102ea8dc4b6Seschrock typedef struct zinject_record { 103ea8dc4b6Seschrock uint64_t zi_objset; 104ea8dc4b6Seschrock uint64_t zi_object; 105ea8dc4b6Seschrock uint64_t zi_start; 106ea8dc4b6Seschrock uint64_t zi_end; 107ea8dc4b6Seschrock uint64_t zi_guid; 108ea8dc4b6Seschrock uint32_t zi_level; 109ea8dc4b6Seschrock uint32_t zi_error; 110ea8dc4b6Seschrock uint64_t zi_type; 111ea8dc4b6Seschrock uint32_t zi_freq; 112ea8dc4b6Seschrock } zinject_record_t; 113ea8dc4b6Seschrock 114ea8dc4b6Seschrock #define ZINJECT_NULL 0x1 115ea8dc4b6Seschrock #define ZINJECT_FLUSH_ARC 0x2 116ea8dc4b6Seschrock #define ZINJECT_UNLOAD_SPA 0x4 117ea8dc4b6Seschrock 118fa9e4066Sahrens typedef struct zfs_cmd { 11915f66a7fSek char zc_name[MAXPATHLEN]; 120e9dbad6fSeschrock char zc_value[MAXPATHLEN]; 121ea8dc4b6Seschrock uint64_t zc_guid; 122e9dbad6fSeschrock uint64_t zc_nvlist_src; /* really (char *) */ 123e9dbad6fSeschrock uint64_t zc_nvlist_src_size; 124e9dbad6fSeschrock uint64_t zc_nvlist_dst; /* really (char *) */ 125e9dbad6fSeschrock uint64_t zc_nvlist_dst_size; 126fa9e4066Sahrens uint64_t zc_cookie; 127fa9e4066Sahrens uint64_t zc_cred; 128fa9e4066Sahrens uint64_t zc_dev; 129fa9e4066Sahrens uint64_t zc_objset_type; 130fa9e4066Sahrens dmu_objset_stats_t zc_objset_stats; 131fa9e4066Sahrens struct drr_begin zc_begin_record; 132ea8dc4b6Seschrock zinject_record_t zc_inject_record; 133ea8dc4b6Seschrock zbookmark_t zc_bookmark; 134fa9e4066Sahrens } zfs_cmd_t; 135fa9e4066Sahrens 136e9dbad6fSeschrock typedef struct zfs_create_data { 137e9dbad6fSeschrock cred_t *zc_cred; 138e9dbad6fSeschrock dev_t zc_dev; 139e9dbad6fSeschrock nvlist_t *zc_props; 140e9dbad6fSeschrock } zfs_create_data_t; 141e9dbad6fSeschrock 142a0965f35Sbonwick #define ZVOL_MAX_MINOR (1 << 16) 143a0965f35Sbonwick #define ZFS_MIN_MINOR (ZVOL_MAX_MINOR + 1) 144a0965f35Sbonwick 145fa9e4066Sahrens #ifdef _KERNEL 146fa9e4066Sahrens 147fa9e4066Sahrens extern dev_info_t *zfs_dip; 148fa9e4066Sahrens 149e9dbad6fSeschrock extern int zfs_secpolicy_write(const char *dataset, cred_t *cr); 150fa9e4066Sahrens extern int zfs_busy(void); 151fa9e4066Sahrens 152fa9e4066Sahrens #endif /* _KERNEL */ 153fa9e4066Sahrens 154fa9e4066Sahrens #ifdef __cplusplus 155fa9e4066Sahrens } 156fa9e4066Sahrens #endif 157fa9e4066Sahrens 158fa9e4066Sahrens #endif /* _SYS_ZFS_IOCTL_H */ 159