usr/src/lib/libzfs/common/libzfs.h
author ahrens
Thu, 02 Aug 2007 21:23:46 -0700
changeset 4787 602d3f97842c
parent 4726 77f07505d455
child 4849 3a61e0a9a953
permissions -rw-r--r--
6393351 unique_* could be improved 6553348 assertion failed: ab->b_flags & (1 << 3) at line 2572 of arc.c 6582408 ::arc should accept -k/-m/-g to print in kilo/mega/giga-bytes 6582438 should have generic reader-priority rwlock for spa_config locks 6582441 zfs_cmd_t should only be used to pass arguments to/from userland 6582456 property code is overdue for some spring cleaning 6588564 zpl unmount lock should use regular rwlock
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     1
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     2
 * CDDL HEADER START
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     3
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
1485
e971e58d18f6 6322005 support for persistent offline
lling
parents: 1356
diff changeset
     5
 * Common Development and Distribution License (the "License").
e971e58d18f6 6322005 support for persistent offline
lling
parents: 1356
diff changeset
     6
 * You may not use this file except in compliance with the License.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     7
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    11
 * and limitations under the License.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    12
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    18
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    19
 * CDDL HEADER END
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    20
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    21
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    22
/*
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
    23
 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    24
 * Use is subject to license terms.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    25
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    26
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    27
#ifndef	_LIBZFS_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    28
#define	_LIBZFS_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    29
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    30
#pragma ident	"%Z%%M%	%I%	%E% SMI"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    31
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    32
#include <assert.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    33
#include <libnvpair.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    34
#include <sys/param.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    35
#include <sys/types.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    36
#include <sys/varargs.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    37
#include <sys/fs/zfs.h>
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
    38
#include <sys/avl.h>
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
    39
#include <ucred.h>
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    40
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    41
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    42
extern "C" {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    43
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    44
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    45
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    46
 * Miscellaneous ZFS constants
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    47
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    48
#define	ZFS_MAXNAMELEN		MAXNAMELEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    49
#define	ZPOOL_MAXNAMELEN	MAXNAMELEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    50
#define	ZFS_MAXPROPLEN		MAXPATHLEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    51
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    52
/*
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    53
 * libzfs errors
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    54
 */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    55
enum {
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    56
	EZFS_NOMEM = 2000,	/* out of memory */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    57
	EZFS_BADPROP,		/* invalid property value */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    58
	EZFS_PROPREADONLY,	/* cannot set readonly property */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    59
	EZFS_PROPTYPE,		/* property does not apply to dataset type */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    60
	EZFS_PROPNONINHERIT,	/* property is not inheritable */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    61
	EZFS_PROPSPACE,		/* bad quota or reservation */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    62
	EZFS_BADTYPE,		/* dataset is not of appropriate type */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    63
	EZFS_BUSY,		/* pool or dataset is busy */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    64
	EZFS_EXISTS,		/* pool or dataset already exists */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    65
	EZFS_NOENT,		/* no such pool or dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    66
	EZFS_BADSTREAM,		/* bad backup stream */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    67
	EZFS_DSREADONLY,	/* dataset is readonly */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    68
	EZFS_VOLTOOBIG,		/* volume is too large for 32-bit system */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    69
	EZFS_VOLHASDATA,	/* volume already contains data */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    70
	EZFS_INVALIDNAME,	/* invalid dataset name */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    71
	EZFS_BADRESTORE,	/* unable to restore to destination */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    72
	EZFS_BADBACKUP,		/* backup failed */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    73
	EZFS_BADTARGET,		/* bad attach/detach/replace target */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    74
	EZFS_NODEVICE,		/* no such device in pool */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    75
	EZFS_BADDEV,		/* invalid device to add */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    76
	EZFS_NOREPLICAS,	/* no valid replicas */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    77
	EZFS_RESILVERING,	/* currently resilvering */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    78
	EZFS_BADVERSION,	/* unsupported version */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    79
	EZFS_POOLUNAVAIL,	/* pool is currently unavailable */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    80
	EZFS_DEVOVERFLOW,	/* too many devices in one vdev */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    81
	EZFS_BADPATH,		/* must be an absolute path */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    82
	EZFS_CROSSTARGET,	/* rename or clone across pool or dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    83
	EZFS_ZONED,		/* used improperly in local zone */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    84
	EZFS_MOUNTFAILED,	/* failed to mount dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    85
	EZFS_UMOUNTFAILED,	/* failed to unmount dataset */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    86
	EZFS_UNSHARENFSFAILED,	/* unshare(1M) failed */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    87
	EZFS_SHARENFSFAILED,	/* share(1M) failed */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    88
	EZFS_DEVLINKS,		/* failed to create zvol links */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    89
	EZFS_PERM,		/* permission denied */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    90
	EZFS_NOSPC,		/* out of space */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    91
	EZFS_IO,		/* I/O error */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    92
	EZFS_INTR,		/* signal received */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    93
	EZFS_ISSPARE,		/* device is a hot spare */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    94
	EZFS_INVALCONFIG,	/* invalid vdev configuration */
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
    95
	EZFS_RECURSIVE,		/* recursive dependency */
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
    96
	EZFS_NOHISTORY,		/* no history object */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    97
	EZFS_UNSHAREISCSIFAILED, /* iscsitgtd failed request to unshare */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    98
	EZFS_SHAREISCSIFAILED,	/* iscsitgtd failed request to share */
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    99
	EZFS_POOLPROPS,		/* couldn't retrieve pool props */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   100
	EZFS_POOL_NOTSUP,	/* ops not supported for this type of pool */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   101
	EZFS_POOL_INVALARG,	/* invalid argument for this pool operation */
3978
2dd668007b7a 6533813 recursive snapshotting resulted in a bad stack overflow
mmusante
parents: 3975
diff changeset
   102
	EZFS_NAMETOOLONG,	/* dataset name is too long */
4276
c42d49ffb16f 6385547 zpool create of a mirror using a device and a slice of a device (of same size) reports an error
taylor
parents: 4007
diff changeset
   103
	EZFS_OPENFAILED,	/* open of device failed */
c42d49ffb16f 6385547 zpool create of a mirror using a device and a slice of a device (of same size) reports an error
taylor
parents: 4007
diff changeset
   104
	EZFS_NOCAP,		/* couldn't get capacity */
c42d49ffb16f 6385547 zpool create of a mirror using a device and a slice of a device (of same size) reports an error
taylor
parents: 4007
diff changeset
   105
	EZFS_LABELFAILED,	/* write of label failed */
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   106
	EZFS_ISCSISVCUNAVAIL,	/* iscsi service unavailable */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   107
	EZFS_BADWHO,		/* invalid permission who */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   108
	EZFS_BADPERM,		/* invalid permission */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   109
	EZFS_BADPERMSET,	/* invalid permission set name */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   110
	EZFS_NODELEGATION,	/* delegated administration is disabled */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   111
	EZFS_PERMRDONLY,	/* pemissions are readonly */
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   112
	EZFS_UNKNOWN
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   113
};
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   114
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   115
/*
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   116
 * The following data structures are all part
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   117
 * of the zfs_allow_t data structure which is
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   118
 * used for printing 'allow' permissions.
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   119
 * It is a linked list of zfs_allow_t's which
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   120
 * then contain avl tree's for user/group/sets/...
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   121
 * and each one of the entries in those trees have
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   122
 * avl tree's for the permissions they belong to and
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   123
 * whether they are local,descendent or local+descendent
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   124
 * permissions.  The AVL trees are used primarily for
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   125
 * sorting purposes, but also so that we can quickly find
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   126
 * a given user and or permission.
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   127
 */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   128
typedef struct zfs_perm_node {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   129
	avl_node_t z_node;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   130
	char z_pname[MAXPATHLEN];
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   131
} zfs_perm_node_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   132
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   133
typedef struct zfs_allow_node {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   134
	avl_node_t z_node;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   135
	char z_key[MAXPATHLEN];		/* name, such as joe */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   136
	avl_tree_t z_localdescend;	/* local+descendent perms */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   137
	avl_tree_t z_local;		/* local permissions */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   138
	avl_tree_t z_descend;		/* descendent permissions */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   139
} zfs_allow_node_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   140
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   141
typedef struct zfs_allow {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   142
	struct zfs_allow *z_next;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   143
	char z_setpoint[MAXPATHLEN];
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   144
	avl_tree_t z_sets;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   145
	avl_tree_t z_crperms;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   146
	avl_tree_t z_user;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   147
	avl_tree_t z_group;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   148
	avl_tree_t z_everyone;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   149
} zfs_allow_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   150
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   151
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   152
 * Basic handle types
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   153
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   154
typedef struct zfs_handle zfs_handle_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   155
typedef struct zpool_handle zpool_handle_t;
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   156
typedef struct libzfs_handle libzfs_handle_t;
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   157
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   158
/*
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   159
 * Library initialization
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   160
 */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   161
extern libzfs_handle_t *libzfs_init(void);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   162
extern void libzfs_fini(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   163
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   164
extern libzfs_handle_t *zpool_get_handle(zpool_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   165
extern libzfs_handle_t *zfs_get_handle(zfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   166
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   167
extern void libzfs_print_on_error(libzfs_handle_t *, boolean_t);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   168
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   169
extern int libzfs_errno(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   170
extern const char *libzfs_error_action(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   171
extern const char *libzfs_error_description(libzfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   172
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   173
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   174
 * Basic handle functions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   175
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   176
extern zpool_handle_t *zpool_open(libzfs_handle_t *, const char *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   177
extern zpool_handle_t *zpool_open_canfail(libzfs_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   178
extern void zpool_close(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   179
extern const char *zpool_get_name(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   180
extern uint64_t zpool_get_guid(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   181
extern uint64_t zpool_get_space_used(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   182
extern uint64_t zpool_get_space_total(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   183
extern int zpool_get_root(zpool_handle_t *, char *, size_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   184
extern int zpool_get_state(zpool_handle_t *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   185
extern uint64_t zpool_get_version(zpool_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   186
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   187
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   188
 * Iterate over all active pools in the system.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   189
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   190
typedef int (*zpool_iter_f)(zpool_handle_t *, void *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   191
extern int zpool_iter(libzfs_handle_t *, zpool_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   192
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   193
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   194
 * Functions to create and destroy pools
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   195
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   196
extern int zpool_create(libzfs_handle_t *, const char *, nvlist_t *,
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   197
    const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   198
extern int zpool_destroy(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   199
extern int zpool_add(zpool_handle_t *, nvlist_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   200
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   201
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   202
 * Functions to manipulate pool and vdev state
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   203
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   204
extern int zpool_scrub(zpool_handle_t *, pool_scrub_type_t);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   205
extern int zpool_clear(zpool_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   206
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   207
extern int zpool_vdev_online(zpool_handle_t *, const char *, int,
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   208
    vdev_state_t *);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   209
extern int zpool_vdev_offline(zpool_handle_t *, const char *, boolean_t);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   210
extern int zpool_vdev_attach(zpool_handle_t *, const char *,
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   211
    const char *, nvlist_t *, int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   212
extern int zpool_vdev_detach(zpool_handle_t *, const char *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   213
extern int zpool_vdev_remove(zpool_handle_t *, const char *);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   214
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   215
extern int zpool_vdev_fault(zpool_handle_t *, uint64_t);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   216
extern int zpool_vdev_degrade(zpool_handle_t *, uint64_t);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   217
extern int zpool_vdev_clear(zpool_handle_t *, uint64_t);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   218
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   219
extern nvlist_t *zpool_find_vdev(zpool_handle_t *, const char *, boolean_t *);
4276
c42d49ffb16f 6385547 zpool create of a mirror using a device and a slice of a device (of same size) reports an error
taylor
parents: 4007
diff changeset
   220
extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   221
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   222
/*
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   223
 * Functions to manage pool properties
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   224
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   225
extern int zpool_set_prop(zpool_handle_t *, const char *, const char *);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   226
extern int zpool_get_prop(zpool_handle_t *, zpool_prop_t, char *,
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   227
	size_t proplen, zfs_source_t *);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   228
extern uint64_t zpool_get_prop_int(zpool_handle_t *, zpool_prop_t);
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   229
extern const char *zpool_prop_to_name(zpool_prop_t);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   230
extern const char *zpool_prop_values(zpool_prop_t);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   231
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   232
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   233
 * Pool health statistics.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   234
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   235
typedef enum {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   236
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   237
	 * The following correspond to faults as defined in the (fault.fs.zfs.*)
1003
ce99098d6a9b 6350417 long name will cause rename a dataset panic
lling
parents: 952
diff changeset
   238
	 * event namespace.  Each is associated with a corresponding message ID.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   239
	 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   240
	ZPOOL_STATUS_CORRUPT_CACHE,	/* corrupt /kernel/drv/zpool.cache */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   241
	ZPOOL_STATUS_MISSING_DEV_R,	/* missing device with replicas */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   242
	ZPOOL_STATUS_MISSING_DEV_NR,	/* missing device with no replicas */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   243
	ZPOOL_STATUS_CORRUPT_LABEL_R,	/* bad device label with replicas */
1003
ce99098d6a9b 6350417 long name will cause rename a dataset panic
lling
parents: 952
diff changeset
   244
	ZPOOL_STATUS_CORRUPT_LABEL_NR,	/* bad device label with no replicas */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   245
	ZPOOL_STATUS_BAD_GUID_SUM,	/* sum of device guids didn't match */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   246
	ZPOOL_STATUS_CORRUPT_POOL,	/* pool metadata is corrupted */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   247
	ZPOOL_STATUS_CORRUPT_DATA,	/* data errors in user (meta)data */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   248
	ZPOOL_STATUS_FAILING_DEV,	/* device experiencing errors */
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   249
	ZPOOL_STATUS_VERSION_NEWER,	/* newer on-disk version */
3975
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   250
	ZPOOL_STATUS_HOSTID_MISMATCH,	/* last accessed by another system */
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   251
	ZPOOL_STATUS_FAULTED_DEV_R,	/* faulted device with replicas */
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   252
	ZPOOL_STATUS_FAULTED_DEV_NR,	/* faulted device with no replicas */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   253
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   254
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   255
	 * The following are not faults per se, but still an error possibly
1003
ce99098d6a9b 6350417 long name will cause rename a dataset panic
lling
parents: 952
diff changeset
   256
	 * requiring administrative attention.  There is no corresponding
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   257
	 * message ID.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   258
	 */
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   259
	ZPOOL_STATUS_VERSION_OLDER,	/* older on-disk version */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   260
	ZPOOL_STATUS_RESILVERING,	/* device being resilvered */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   261
	ZPOOL_STATUS_OFFLINE_DEV,	/* device online */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   262
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   263
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   264
	 * Finally, the following indicates a healthy pool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   265
	 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   266
	ZPOOL_STATUS_OK
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   267
} zpool_status_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   268
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   269
extern zpool_status_t zpool_get_status(zpool_handle_t *, char **);
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   270
extern zpool_status_t zpool_import_status(nvlist_t *, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   271
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   272
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   273
 * Statistics and configuration functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   274
 */
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   275
extern nvlist_t *zpool_get_config(zpool_handle_t *, nvlist_t **);
2142
f6e0487aa9a3 6433264 crash when adding spare: nvlist_lookup_string(cnv, "path", &path) == 0
eschrock
parents: 2082
diff changeset
   276
extern int zpool_refresh_stats(zpool_handle_t *, boolean_t *);
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   277
extern int zpool_get_errlog(zpool_handle_t *, nvlist_t **);
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   278
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   279
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   280
 * Import and export functions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   281
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   282
extern int zpool_export(zpool_handle_t *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   283
extern int zpool_import(libzfs_handle_t *, nvlist_t *, const char *,
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   284
    const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   285
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   286
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   287
 * Search for pools to import
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   288
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   289
extern nvlist_t *zpool_find_import(libzfs_handle_t *, int, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   290
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   291
/*
1354
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   292
 * Miscellaneous pool functions
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   293
 */
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   294
struct zfs_cmd;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   295
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   296
extern char *zpool_vdev_name(libzfs_handle_t *, zpool_handle_t *, nvlist_t *);
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   297
extern int zpool_upgrade(zpool_handle_t *);
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
   298
extern int zpool_get_history(zpool_handle_t *, nvlist_t **);
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   299
extern void zpool_stage_history(libzfs_handle_t *, int, char **,
4715
e8d212dda064 6535695 Panic: shpp->sh_eof == shpp->sh_pool_create_len, file: ../../common/fs/zfs/spa_history.c, line: 235
ek110237
parents: 4577
diff changeset
   300
    boolean_t zfs_cmd);
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   301
extern void zpool_obj_to_path(zpool_handle_t *, uint64_t, uint64_t, char *,
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   302
    size_t len);
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   303
extern int zfs_ioctl(libzfs_handle_t *, int, struct zfs_cmd *);
1354
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   304
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   305
 * Basic handle manipulations.  These functions do not create or destroy the
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   306
 * underlying datasets, only the references to them.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   307
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   308
extern zfs_handle_t *zfs_open(libzfs_handle_t *, const char *, int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   309
extern void zfs_close(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   310
extern zfs_type_t zfs_get_type(const zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   311
extern const char *zfs_get_name(const zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   312
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   313
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   314
 * Property management functions.  Some functions are shared with the kernel,
1003
ce99098d6a9b 6350417 long name will cause rename a dataset panic
lling
parents: 952
diff changeset
   315
 * and are found in sys/fs/zfs.h.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   316
 */
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   317
extern const char *zfs_prop_to_name(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   318
extern int zfs_prop_set(zfs_handle_t *, const char *, const char *);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   319
extern int zfs_prop_get(zfs_handle_t *, zfs_prop_t, char *, size_t,
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   320
    zfs_source_t *, char *, size_t, boolean_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   321
extern int zfs_prop_get_numeric(zfs_handle_t *, zfs_prop_t, uint64_t *,
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   322
    zfs_source_t *, char *, size_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   323
extern uint64_t zfs_prop_get_int(zfs_handle_t *, zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   324
extern const char *zfs_prop_get_string(zfs_handle_t *, zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   325
extern int zfs_prop_inherit(zfs_handle_t *, const char *);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   326
extern const char *zfs_prop_values(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   327
extern int zfs_prop_valid_for_type(zfs_prop_t, int);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   328
extern const char *zfs_prop_default_string(zfs_prop_t prop);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   329
extern uint64_t zfs_prop_default_numeric(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   330
extern int zfs_prop_is_string(zfs_prop_t prop);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   331
extern const char *zfs_prop_column_name(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   332
extern boolean_t zfs_prop_align_right(zfs_prop_t);
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   333
extern void nicebool(int value, char *buf, size_t buflen);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   334
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   335
typedef struct zfs_proplist {
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   336
	zfs_prop_t	pl_prop;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   337
	char		*pl_user_prop;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   338
	struct zfs_proplist *pl_next;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   339
	boolean_t	pl_all;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   340
	size_t		pl_width;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   341
	boolean_t	pl_fixed;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   342
} zfs_proplist_t;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   343
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   344
typedef zfs_proplist_t zpool_proplist_t;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   345
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   346
extern int zfs_get_proplist(libzfs_handle_t *, char *, zfs_proplist_t **);
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   347
extern int zpool_get_proplist(libzfs_handle_t *, char *, zpool_proplist_t **);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   348
extern int zfs_expand_proplist(zfs_handle_t *, zfs_proplist_t **);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   349
extern int zpool_expand_proplist(zpool_handle_t *, zpool_proplist_t **);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   350
extern void zfs_free_proplist(zfs_proplist_t *);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   351
extern nvlist_t *zfs_get_user_props(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   352
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   353
#define	ZFS_MOUNTPOINT_NONE	"none"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   354
#define	ZFS_MOUNTPOINT_LEGACY	"legacy"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   355
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   356
/*
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   357
 * Functions for printing properties from zfs/zpool
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   358
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   359
typedef struct libzfs_get_cbdata {
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   360
	int cb_sources;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   361
	int cb_columns[4];
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   362
	int cb_colwidths[5];
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   363
	boolean_t cb_scripted;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   364
	boolean_t cb_literal;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   365
	boolean_t cb_first;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   366
	zfs_proplist_t *cb_proplist;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   367
} libzfs_get_cbdata_t;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   368
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   369
void libzfs_print_one_property(const char *, libzfs_get_cbdata_t *,
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   370
    const char *, const char *, zfs_source_t, const char *);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   371
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   372
#define	GET_COL_NAME		1
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   373
#define	GET_COL_PROPERTY	2
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   374
#define	GET_COL_VALUE		3
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   375
#define	GET_COL_SOURCE		4
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   376
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   377
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   378
 * Iterator functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   379
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   380
typedef int (*zfs_iter_f)(zfs_handle_t *, void *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   381
extern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   382
extern int zfs_iter_children(zfs_handle_t *, zfs_iter_f, void *);
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   383
extern int zfs_iter_dependents(zfs_handle_t *, boolean_t, zfs_iter_f, void *);
1356
e021b5e4aa0e 6377671 zfs mount -a shouldn't bother checking snapshots
eschrock
parents: 1354
diff changeset
   384
extern int zfs_iter_filesystems(zfs_handle_t *, zfs_iter_f, void *);
e021b5e4aa0e 6377671 zfs mount -a shouldn't bother checking snapshots
eschrock
parents: 1354
diff changeset
   385
extern int zfs_iter_snapshots(zfs_handle_t *, zfs_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   386
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   387
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   388
 * Functions to create and destroy datasets.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   389
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   390
extern int zfs_create(libzfs_handle_t *, const char *, zfs_type_t,
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   391
    nvlist_t *);
4490
abf035049f7f PSARC 2007/199 zfs {create,clone,rename} -p
vb160487
parents: 4451
diff changeset
   392
extern int zfs_create_ancestors(libzfs_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   393
extern int zfs_destroy(zfs_handle_t *);
2199
712a788c2dfd PSARC 2006/388 snapshot -r
ahrens
parents: 2142
diff changeset
   394
extern int zfs_destroy_snaps(zfs_handle_t *, char *);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   395
extern int zfs_clone(zfs_handle_t *, const char *, nvlist_t *);
2199
712a788c2dfd PSARC 2006/388 snapshot -r
ahrens
parents: 2142
diff changeset
   396
extern int zfs_snapshot(libzfs_handle_t *, const char *, boolean_t);
1294
87b43e5de5ee 6364129 need to unmount any child datasets before doing the rollback
lling
parents: 1003
diff changeset
   397
extern int zfs_rollback(zfs_handle_t *, zfs_handle_t *, int);
4490
abf035049f7f PSARC 2007/199 zfs {create,clone,rename} -p
vb160487
parents: 4451
diff changeset
   398
extern int zfs_rename(zfs_handle_t *, const char *, boolean_t);
3504
6eb2466ff1c9 6516175 zfs_send()/zfs_receive() should take file descriptor arguments
ahl
parents: 3444
diff changeset
   399
extern int zfs_send(zfs_handle_t *, const char *, int);
2665
7b208a92357b PSARC 2006/479 zfs receive -F
nd150628
parents: 2500
diff changeset
   400
extern int zfs_receive(libzfs_handle_t *, const char *, int, int, int,
3504
6eb2466ff1c9 6516175 zfs_send()/zfs_receive() should take file descriptor arguments
ahl
parents: 3444
diff changeset
   401
    boolean_t, int);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   402
extern int zfs_promote(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   403
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   404
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   405
 * Miscellaneous functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   406
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   407
extern const char *zfs_type_to_name(zfs_type_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   408
extern void zfs_refresh_properties(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   409
extern int zfs_name_valid(const char *, zfs_type_t);
3635
63e2169c1249 PSARC 2007/050 zfs list -d
ck153898
parents: 3504
diff changeset
   410
extern zfs_handle_t *zfs_path_to_zhandle(libzfs_handle_t *, char *, zfs_type_t);
4490
abf035049f7f PSARC 2007/199 zfs {create,clone,rename} -p
vb160487
parents: 4451
diff changeset
   411
extern boolean_t zfs_dataset_exists(libzfs_handle_t *, const char *,
abf035049f7f PSARC 2007/199 zfs {create,clone,rename} -p
vb160487
parents: 4451
diff changeset
   412
    zfs_type_t);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   413
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   414
/*
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   415
 * dataset permission functions.
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   416
 */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   417
extern int zfs_perm_set(zfs_handle_t *, nvlist_t *);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   418
extern int zfs_perm_remove(zfs_handle_t *, nvlist_t *);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   419
extern int zfs_build_perms(zfs_handle_t *, char *, char *,
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   420
    zfs_deleg_who_type_t, zfs_deleg_inherit_t, nvlist_t **nvlist_t);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   421
extern int zfs_perm_get(zfs_handle_t *, zfs_allow_t **);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   422
extern void zfs_free_allows(zfs_allow_t *);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   423
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   424
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   425
 * Mount support functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   426
 */
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   427
extern boolean_t is_mounted(libzfs_handle_t *, const char *special, char **);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   428
extern boolean_t zfs_is_mounted(zfs_handle_t *, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   429
extern int zfs_mount(zfs_handle_t *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   430
extern int zfs_unmount(zfs_handle_t *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   431
extern int zfs_unmountall(zfs_handle_t *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   432
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   433
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   434
 * Share support functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   435
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   436
extern boolean_t zfs_is_shared(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   437
extern int zfs_share(zfs_handle_t *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   438
extern int zfs_unshare(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   439
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   440
/*
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   441
 * Protocol-specific share support functions.
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   442
 */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   443
extern boolean_t zfs_is_shared_nfs(zfs_handle_t *, char **);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   444
extern int zfs_share_nfs(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   445
extern int zfs_unshare_nfs(zfs_handle_t *, const char *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   446
extern int zfs_unshareall_nfs(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   447
extern boolean_t zfs_is_shared_iscsi(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   448
extern int zfs_share_iscsi(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   449
extern int zfs_unshare_iscsi(zfs_handle_t *);
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   450
extern int zfs_iscsi_perm_check(libzfs_handle_t *, char *, ucred_t *);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   451
extern int zfs_deleg_share_nfs(libzfs_handle_t *, char *, char *,
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   452
    void *, void *, int, boolean_t);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   453
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   454
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   455
 * When dealing with nvlists, verify() is extremely useful
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   456
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   457
#ifdef NDEBUG
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   458
#define	verify(EX)	((void)(EX))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   459
#else
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   460
#define	verify(EX)	assert(EX)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   461
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   462
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   463
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   464
 * Utility function to convert a number to a human-readable form.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   465
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   466
extern void zfs_nicenum(uint64_t, char *, size_t);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   467
extern int zfs_nicestrtonum(libzfs_handle_t *, const char *, uint64_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   468
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   469
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   470
 * Pool destroy special.  Remove the device information without destroying
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   471
 * the underlying dataset.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   472
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   473
extern int zfs_remove_link(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   474
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   475
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   476
 * Given a device or file, determine if it is part of a pool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   477
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   478
extern int zpool_in_use(libzfs_handle_t *, int, pool_state_t *, char **,
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   479
    boolean_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   480
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   481
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   482
 * ftyp special.  Read the label from a given device.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   483
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   484
extern int zpool_read_label(int, nvlist_t **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   485
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   486
/*
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   487
 * Create and remove zvol /dev links.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   488
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   489
extern int zpool_create_zvol_links(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   490
extern int zpool_remove_zvol_links(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   491
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   492
/*
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   493
 * Enable and disable datasets within a pool by mounting/unmounting and
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   494
 * sharing/unsharing them.
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   495
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   496
extern int zpool_enable_datasets(zpool_handle_t *, const char *, int);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   497
extern int zpool_disable_datasets(zpool_handle_t *, boolean_t);
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   498
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   499
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   500
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   501
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   502
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   503
#endif	/* _LIBZFS_H */