5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
23 * Copyright (c) 2011-2012 Pawel Jakub Dawidek. All rights reserved.
24 * Copyright (c) 2012, 2017 by Delphix. All rights reserved.
25 * Copyright 2016 RackTop Systems.
26 * Copyright (c) 2014 Integros [integros.com]
27 */
28
29 #ifndef _SYS_ZFS_IOCTL_H
30 #define _SYS_ZFS_IOCTL_H
31
32 #include <sys/cred.h>
33 #include <sys/dmu.h>
34 #include <sys/zio.h>
35 #include <sys/dsl_deleg.h>
36 #include <sys/spa.h>
37 #include <sys/zfs_stat.h>
38
39 #ifdef _KERNEL
40 #include <sys/nvpair.h>
41 #endif /* _KERNEL */
42
43 #ifdef __cplusplus
44 extern "C" {
382 uint64_t zc_history_len;
383 uint64_t zc_history_offset;
384 uint64_t zc_obj;
385 uint64_t zc_iflags; /* internal to zfs(7fs) */
386 zfs_share_t zc_share;
387 dmu_objset_stats_t zc_objset_stats;
388 dmu_replay_record_t zc_begin_record;
389 zinject_record_t zc_inject_record;
390 uint32_t zc_defer_destroy;
391 uint32_t zc_flags;
392 uint64_t zc_action_handle;
393 int zc_cleanup_fd;
394 uint8_t zc_simple;
395 uint8_t zc_pad3[3];
396 boolean_t zc_resumable;
397 uint32_t zc_pad4;
398 uint64_t zc_sendobj;
399 uint64_t zc_fromobj;
400 uint64_t zc_createtxg;
401 zfs_stat_t zc_stat;
402 } zfs_cmd_t;
403
404 typedef struct zfs_useracct {
405 char zu_domain[256];
406 uid_t zu_rid;
407 uint32_t zu_pad;
408 uint64_t zu_space;
409 } zfs_useracct_t;
410
411 #define ZFSDEV_MAX_MINOR (1 << 16)
412 #define ZFS_MIN_MINOR (ZFSDEV_MAX_MINOR + 1)
413
414 #define ZPOOL_EXPORT_AFTER_SPLIT 0x1
415
416 #ifdef _KERNEL
417 struct objset;
418 struct zfsvfs;
419
420 typedef struct zfs_creat {
421 nvlist_t *zct_zplprops;
422 nvlist_t *zct_props;
423 } zfs_creat_t;
424
425 extern dev_info_t *zfs_dip;
426
427 extern int zfs_secpolicy_snapshot_perms(const char *, cred_t *);
428 extern int zfs_secpolicy_rename_perms(const char *, const char *, cred_t *);
429 extern int zfs_secpolicy_destroy_perms(const char *, cred_t *);
430 extern int zfs_busy(void);
431 extern void zfs_unmount_snap(const char *);
432 extern void zfs_destroy_unmount_origin(const char *);
433 extern int getzfsvfs_impl(struct objset *, struct zfsvfs **);
434 extern int getzfsvfs(const char *, struct zfsvfs **);
435
|
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
23 * Copyright (c) 2011-2012 Pawel Jakub Dawidek. All rights reserved.
24 * Copyright (c) 2012, 2017 by Delphix. All rights reserved.
25 * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
26 * Copyright 2016 RackTop Systems.
27 * Copyright (c) 2014 Integros [integros.com]
28 */
29
30 #ifndef _SYS_ZFS_IOCTL_H
31 #define _SYS_ZFS_IOCTL_H
32
33 #include <sys/cred.h>
34 #include <sys/dmu.h>
35 #include <sys/zio.h>
36 #include <sys/dsl_deleg.h>
37 #include <sys/spa.h>
38 #include <sys/zfs_stat.h>
39
40 #ifdef _KERNEL
41 #include <sys/nvpair.h>
42 #endif /* _KERNEL */
43
44 #ifdef __cplusplus
45 extern "C" {
383 uint64_t zc_history_len;
384 uint64_t zc_history_offset;
385 uint64_t zc_obj;
386 uint64_t zc_iflags; /* internal to zfs(7fs) */
387 zfs_share_t zc_share;
388 dmu_objset_stats_t zc_objset_stats;
389 dmu_replay_record_t zc_begin_record;
390 zinject_record_t zc_inject_record;
391 uint32_t zc_defer_destroy;
392 uint32_t zc_flags;
393 uint64_t zc_action_handle;
394 int zc_cleanup_fd;
395 uint8_t zc_simple;
396 uint8_t zc_pad3[3];
397 boolean_t zc_resumable;
398 uint32_t zc_pad4;
399 uint64_t zc_sendobj;
400 uint64_t zc_fromobj;
401 uint64_t zc_createtxg;
402 zfs_stat_t zc_stat;
403 uint64_t zc_sendcounter;
404 boolean_t zc_sendsize;
405 } zfs_cmd_t;
406
407 typedef struct zfs_useracct {
408 char zu_domain[256];
409 uid_t zu_rid;
410 uint32_t zu_pad;
411 uint64_t zu_space;
412 } zfs_useracct_t;
413
414 #define ZFSDEV_MAX_MINOR (1 << 16)
415 #define ZFS_MIN_MINOR (ZFSDEV_MAX_MINOR + 1)
416
417 #define ZPOOL_EXPORT_AFTER_SPLIT 0x1
418
419 #define ZFS_EVENT_CHANNEL "com.nexenta:zfs"
420 #define ZFS_EC_STATUS "status.zfs"
421 #define ZPOOL_EC_STATUS "status.zpool"
422
423 void zfs_event_post(const char *subclass,
424 const char *operation, nvlist_t *ev_data);
425 int zfs_ioc_set_prop_impl(char *name, nvlist_t *props,
426 boolean_t received, nvlist_t **out_errors);
427
428
429 #ifdef _KERNEL
430 struct objset;
431 struct zfsvfs;
432
433 typedef struct zfs_creat {
434 nvlist_t *zct_zplprops;
435 nvlist_t *zct_props;
436 } zfs_creat_t;
437
438 extern dev_info_t *zfs_dip;
439
440 extern int zfs_secpolicy_snapshot_perms(const char *, cred_t *);
441 extern int zfs_secpolicy_rename_perms(const char *, const char *, cred_t *);
442 extern int zfs_secpolicy_destroy_perms(const char *, cred_t *);
443 extern int zfs_busy(void);
444 extern void zfs_unmount_snap(const char *);
445 extern void zfs_destroy_unmount_origin(const char *);
446 extern int getzfsvfs_impl(struct objset *, struct zfsvfs **);
447 extern int getzfsvfs(const char *, struct zfsvfs **);
448
|