usr/src/lib/libzfs/common/libzfs.h
author Eric Schrock <Eric.Schrock@Sun.COM>
Tue, 20 Oct 2009 09:30:12 -0700
changeset 10817 7dfde45252f0
parent 10685 931790026ac6
child 10830 dd88d8700b3e
permissions -rw-r--r--
6889826 ZFS retire agent should be able to repair pools 6889827 ZFS retire agent needs to do a better job of staying in sync 6889824 infrastructure for ZFS notification of external faults 6889808 ZFS DE infrastructure to handle FRUs 6889814 ZFS DE should clear cases when vdevs and pools are removed 6889828 libzfs changes to allow spare offline/online 6889830 zpool_iter() should be tolerant of recursive invocation 6891150 want versions of topo_fmri_str{cmp,hash} that ignore auth info
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
/*
8584
327a1b6dd944 6794452 zfs receive can't restore a root pool
Lori Alt <Lori.Alt@Sun.COM>
parents: 8343
diff changeset
    23
 * Copyright 2009 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
#include <assert.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    31
#include <libnvpair.h>
8228
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
    32
#include <sys/mnttab.h>
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    33
#include <sys/param.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    34
#include <sys/types.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    35
#include <sys/varargs.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    36
#include <sys/fs/zfs.h>
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
    37
#include <sys/avl.h>
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
    38
#include <ucred.h>
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    39
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    40
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    41
extern "C" {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    42
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    43
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    44
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    45
 * Miscellaneous ZFS constants
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    46
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    47
#define	ZFS_MAXNAMELEN		MAXNAMELEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    48
#define	ZPOOL_MAXNAMELEN	MAXNAMELEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    49
#define	ZFS_MAXPROPLEN		MAXPATHLEN
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
    50
#define	ZPOOL_MAXPROPLEN	MAXPATHLEN
789
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_INVALIDNAME,	/* invalid dataset name */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    70
	EZFS_BADRESTORE,	/* unable to restore to destination */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    71
	EZFS_BADBACKUP,		/* backup failed */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    72
	EZFS_BADTARGET,		/* bad attach/detach/replace target */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    73
	EZFS_NODEVICE,		/* no such device in pool */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    74
	EZFS_BADDEV,		/* invalid device to add */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    75
	EZFS_NOREPLICAS,	/* no valid replicas */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    76
	EZFS_RESILVERING,	/* currently resilvering */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    77
	EZFS_BADVERSION,	/* unsupported version */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    78
	EZFS_POOLUNAVAIL,	/* pool is currently unavailable */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    79
	EZFS_DEVOVERFLOW,	/* too many devices in one vdev */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    80
	EZFS_BADPATH,		/* must be an absolute path */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    81
	EZFS_CROSSTARGET,	/* rename or clone across pool or dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    82
	EZFS_ZONED,		/* used improperly in local zone */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    83
	EZFS_MOUNTFAILED,	/* failed to mount dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    84
	EZFS_UMOUNTFAILED,	/* failed to unmount dataset */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    85
	EZFS_UNSHARENFSFAILED,	/* unshare(1M) failed */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    86
	EZFS_SHARENFSFAILED,	/* share(1M) failed */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    87
	EZFS_PERM,		/* permission denied */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    88
	EZFS_NOSPC,		/* out of space */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    89
	EZFS_IO,		/* I/O error */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    90
	EZFS_INTR,		/* signal received */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    91
	EZFS_ISSPARE,		/* device is a hot spare */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    92
	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
    93
	EZFS_RECURSIVE,		/* recursive dependency */
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
    94
	EZFS_NOHISTORY,		/* no history object */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    95
	EZFS_UNSHAREISCSIFAILED, /* iscsitgtd failed request to unshare */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    96
	EZFS_SHAREISCSIFAILED,	/* iscsitgtd failed request to share */
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    97
	EZFS_POOLPROPS,		/* couldn't retrieve pool props */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    98
	EZFS_POOL_NOTSUP,	/* ops not supported for this type of pool */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    99
	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
   100
	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
   101
	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
   102
	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
   103
	EZFS_LABELFAILED,	/* write of label failed */
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   104
	EZFS_ISCSISVCUNAVAIL,	/* iscsi service unavailable */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   105
	EZFS_BADWHO,		/* invalid permission who */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   106
	EZFS_BADPERM,		/* invalid permission */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   107
	EZFS_BADPERMSET,	/* invalid permission set name */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   108
	EZFS_NODELEGATION,	/* delegated administration is disabled */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   109
	EZFS_PERMRDONLY,	/* pemissions are readonly */
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   110
	EZFS_UNSHARESMBFAILED,	/* failed to unshare over smb */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   111
	EZFS_SHARESMBFAILED,	/* failed to share over smb */
5363
36eeffc5336d PSARC 2007/607 ZFS cachefile property
eschrock
parents: 5331
diff changeset
   112
	EZFS_BADCACHE,		/* bad cache file */
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5446
diff changeset
   113
	EZFS_ISL2CACHE,		/* device is for the level 2 ARC */
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5994
diff changeset
   114
	EZFS_VDEVNOTSUP,	/* unsupported vdev type */
7042
46fc4b6db23e 6721094 Setting certain properties on root pools should not be allowed
gw25295
parents: 6957
diff changeset
   115
	EZFS_NOTSUP,		/* ops not supported on this dataset */
7214
04c540040a32 6721908 A hot spare "in use" in an exported zpool, is stolen when a disk fails in an imported pool.
lling
parents: 7184
diff changeset
   116
	EZFS_ACTIVE_SPARE,	/* pool has active shared spare devices */
9701
cc5b64682e64 6803605 should be able to offline log devices
George Wilson <George.Wilson@Sun.COM>
parents: 9554
diff changeset
   117
	EZFS_UNPLAYED_LOGS,	/* log device has unplayed logs */
10242
c40d075fbca6 PSARC/2009/297 zfs snapshot holds
Chris Kirby <chris.kirby@sun.com>
parents: 10151
diff changeset
   118
	EZFS_REFTAG_RELE,	/* snapshot release: tag not found */
c40d075fbca6 PSARC/2009/297 zfs snapshot holds
Chris Kirby <chris.kirby@sun.com>
parents: 10151
diff changeset
   119
	EZFS_REFTAG_HOLD,	/* snapshot hold: tag already exists */
10342
108f0058f837 6833815 scheduled snapshots deleted per snapshot policy can lead to replication failures
Chris Kirby <chris.kirby@sun.com>
parents: 10242
diff changeset
   120
	EZFS_TAGTOOLONG,	/* snapshot hold/rele: tag too long */
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   121
	EZFS_UNKNOWN
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   122
};
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   123
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   124
/*
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   125
 * The following data structures are all part
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   126
 * of the zfs_allow_t data structure which is
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   127
 * used for printing 'allow' permissions.
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   128
 * It is a linked list of zfs_allow_t's which
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   129
 * then contain avl tree's for user/group/sets/...
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   130
 * and each one of the entries in those trees have
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   131
 * avl tree's for the permissions they belong to and
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   132
 * whether they are local,descendent or local+descendent
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   133
 * permissions.  The AVL trees are used primarily for
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   134
 * sorting purposes, but also so that we can quickly find
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   135
 * a given user and or permission.
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   136
 */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   137
typedef struct zfs_perm_node {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   138
	avl_node_t z_node;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   139
	char z_pname[MAXPATHLEN];
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   140
} zfs_perm_node_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   141
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   142
typedef struct zfs_allow_node {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   143
	avl_node_t z_node;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   144
	char z_key[MAXPATHLEN];		/* name, such as joe */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   145
	avl_tree_t z_localdescend;	/* local+descendent perms */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   146
	avl_tree_t z_local;		/* local permissions */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   147
	avl_tree_t z_descend;		/* descendent permissions */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   148
} zfs_allow_node_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   149
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   150
typedef struct zfs_allow {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   151
	struct zfs_allow *z_next;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   152
	char z_setpoint[MAXPATHLEN];
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   153
	avl_tree_t z_sets;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   154
	avl_tree_t z_crperms;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   155
	avl_tree_t z_user;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   156
	avl_tree_t z_group;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   157
	avl_tree_t z_everyone;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   158
} zfs_allow_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   159
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   160
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   161
 * Basic handle types
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   162
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   163
typedef struct zfs_handle zfs_handle_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   164
typedef struct zpool_handle zpool_handle_t;
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   165
typedef struct libzfs_handle libzfs_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
/*
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   168
 * Library initialization
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   169
 */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   170
extern libzfs_handle_t *libzfs_init(void);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   171
extern void libzfs_fini(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   172
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   173
extern libzfs_handle_t *zpool_get_handle(zpool_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   174
extern libzfs_handle_t *zfs_get_handle(zfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   175
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   176
extern void libzfs_print_on_error(libzfs_handle_t *, boolean_t);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   177
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   178
extern int libzfs_errno(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   179
extern const char *libzfs_error_action(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   180
extern const char *libzfs_error_description(libzfs_handle_t *);
8228
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   181
extern void libzfs_mnttab_init(libzfs_handle_t *);
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   182
extern void libzfs_mnttab_fini(libzfs_handle_t *);
8811
f8deccf701cf 6790687 libzfs mnttab caching ignores external changes
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8802
diff changeset
   183
extern void libzfs_mnttab_cache(libzfs_handle_t *, boolean_t);
8228
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   184
extern int libzfs_mnttab_find(libzfs_handle_t *, const char *,
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   185
    struct mnttab *);
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   186
extern void libzfs_mnttab_add(libzfs_handle_t *, const char *,
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   187
    const char *, const char *);
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   188
extern void libzfs_mnttab_remove(libzfs_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   189
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   190
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   191
 * Basic handle functions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   192
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   193
extern zpool_handle_t *zpool_open(libzfs_handle_t *, const char *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   194
extern zpool_handle_t *zpool_open_canfail(libzfs_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   195
extern void zpool_close(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   196
extern const char *zpool_get_name(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   197
extern int zpool_get_state(zpool_handle_t *);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   198
extern char *zpool_state_to_name(vdev_state_t, vdev_aux_t);
6865
176d18c623cc 6539380 zfs list uses too much memory
rm160521
parents: 6807
diff changeset
   199
extern void zpool_free_handles(libzfs_handle_t *);
789
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
 * Iterate over all active pools in the system.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   203
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   204
typedef int (*zpool_iter_f)(zpool_handle_t *, void *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   205
extern int zpool_iter(libzfs_handle_t *, zpool_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   206
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   207
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   208
 * Functions to create and destroy pools
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   209
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   210
extern int zpool_create(libzfs_handle_t *, const char *, nvlist_t *,
7184
9508660f9c27 PSARC 2008/223 Pool root file system properties via zpool(1M)
timh
parents: 7042
diff changeset
   211
    nvlist_t *, nvlist_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   212
extern int zpool_destroy(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   213
extern int zpool_add(zpool_handle_t *, nvlist_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   214
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   215
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   216
 * Functions to manipulate pool and vdev state
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   217
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   218
extern int zpool_scrub(zpool_handle_t *, pool_scrub_type_t);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   219
extern int zpool_clear(zpool_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   220
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   221
extern int zpool_vdev_online(zpool_handle_t *, const char *, int,
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   222
    vdev_state_t *);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   223
extern int zpool_vdev_offline(zpool_handle_t *, const char *, boolean_t);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   224
extern int zpool_vdev_attach(zpool_handle_t *, const char *,
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   225
    const char *, nvlist_t *, int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   226
extern int zpool_vdev_detach(zpool_handle_t *, const char *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   227
extern int zpool_vdev_remove(zpool_handle_t *, const char *);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   228
10817
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   229
extern int zpool_vdev_fault(zpool_handle_t *, uint64_t, vdev_aux_t);
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   230
extern int zpool_vdev_degrade(zpool_handle_t *, uint64_t, vdev_aux_t);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   231
extern int zpool_vdev_clear(zpool_handle_t *, uint64_t);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   232
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5446
diff changeset
   233
extern nvlist_t *zpool_find_vdev(zpool_handle_t *, const char *, boolean_t *,
7326
a3c803100a09 6713886 hot spares of mirrored log devices should not be allowed
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 7294
diff changeset
   234
    boolean_t *, boolean_t *);
9816
847676ec1c5b PSARC 2008/353 zpool autoexpand property
George Wilson <George.Wilson@Sun.COM>
parents: 9701
diff changeset
   235
extern nvlist_t *zpool_find_vdev_by_physpath(zpool_handle_t *, const char *,
847676ec1c5b PSARC 2008/353 zpool autoexpand property
George Wilson <George.Wilson@Sun.COM>
parents: 9701
diff changeset
   236
    boolean_t *, boolean_t *, 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
   237
extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   238
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   239
/*
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   240
 * Functions to manage pool properties
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   241
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   242
extern int zpool_set_prop(zpool_handle_t *, const char *, const char *);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   243
extern int zpool_get_prop(zpool_handle_t *, zpool_prop_t, char *,
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   244
    size_t proplen, zprop_source_t *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   245
extern uint64_t zpool_get_prop_int(zpool_handle_t *, zpool_prop_t,
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   246
    zprop_source_t *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   247
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   248
extern const char *zpool_prop_to_name(zpool_prop_t);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   249
extern const char *zpool_prop_values(zpool_prop_t);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   250
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   251
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   252
 * Pool health statistics.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   253
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   254
typedef enum {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   255
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   256
	 * 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
   257
	 * event namespace.  Each is associated with a corresponding message ID.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   258
	 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   259
	ZPOOL_STATUS_CORRUPT_CACHE,	/* corrupt /kernel/drv/zpool.cache */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   260
	ZPOOL_STATUS_MISSING_DEV_R,	/* missing device with replicas */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   261
	ZPOOL_STATUS_MISSING_DEV_NR,	/* missing device with no replicas */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   262
	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
   263
	ZPOOL_STATUS_CORRUPT_LABEL_NR,	/* bad device label with no replicas */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   264
	ZPOOL_STATUS_BAD_GUID_SUM,	/* sum of device guids didn't match */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   265
	ZPOOL_STATUS_CORRUPT_POOL,	/* pool metadata is corrupted */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   266
	ZPOOL_STATUS_CORRUPT_DATA,	/* data errors in user (meta)data */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   267
	ZPOOL_STATUS_FAILING_DEV,	/* device experiencing errors */
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   268
	ZPOOL_STATUS_VERSION_NEWER,	/* newer on-disk version */
3975
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   269
	ZPOOL_STATUS_HOSTID_MISMATCH,	/* last accessed by another system */
6523
c1d2a7f04573 6616739 panic message ZFS: I/O failure (write on <unknown> is not very helpful
ek110237
parents: 6423
diff changeset
   270
	ZPOOL_STATUS_IO_FAILURE_WAIT,	/* failed I/O, failmode 'wait' */
c1d2a7f04573 6616739 panic message ZFS: I/O failure (write on <unknown> is not very helpful
ek110237
parents: 6423
diff changeset
   271
	ZPOOL_STATUS_IO_FAILURE_CONTINUE, /* failed I/O, failmode 'continue' */
8343
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   272
	ZPOOL_STATUS_BAD_LOG,		/* cannot read log chain(s) */
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   273
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   274
	/*
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   275
	 * These faults have no corresponding message ID.  At the time we are
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   276
	 * checking the status, the original reason for the FMA fault (I/O or
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   277
	 * checksum errors) has been lost.
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   278
	 */
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   279
	ZPOOL_STATUS_FAULTED_DEV_R,	/* faulted device with replicas */
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   280
	ZPOOL_STATUS_FAULTED_DEV_NR,	/* faulted device with no replicas */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   281
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   282
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   283
	 * 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
   284
	 * requiring administrative attention.  There is no corresponding
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   285
	 * message ID.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   286
	 */
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   287
	ZPOOL_STATUS_VERSION_OLDER,	/* older on-disk version */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   288
	ZPOOL_STATUS_RESILVERING,	/* device being resilvered */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   289
	ZPOOL_STATUS_OFFLINE_DEV,	/* device online */
10151
3e86bccfd4da 6793967 zpool status -x sometimes incorrect.
George Wilson <George.Wilson@Sun.COM>
parents: 9816
diff changeset
   290
	ZPOOL_STATUS_REMOVED_DEV,	/* removed device */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   291
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   292
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   293
	 * Finally, the following indicates a healthy pool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   294
	 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   295
	ZPOOL_STATUS_OK
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   296
} zpool_status_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   297
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   298
extern zpool_status_t zpool_get_status(zpool_handle_t *, char **);
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   299
extern zpool_status_t zpool_import_status(nvlist_t *, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   300
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   301
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   302
 * Statistics and configuration functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   303
 */
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   304
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
   305
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
   306
extern int zpool_get_errlog(zpool_handle_t *, nvlist_t **);
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   307
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   308
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   309
 * Import and export functions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   310
 */
7214
04c540040a32 6721908 A hot spare "in use" in an exported zpool, is stolen when a disk fails in an imported pool.
lling
parents: 7184
diff changeset
   311
extern int zpool_export(zpool_handle_t *, boolean_t);
8211
32722be6ad3b 6775357 ZFS should have a way to export a pool without touching anything
George Wilson <George.Wilson@Sun.COM>
parents: 7656
diff changeset
   312
extern int zpool_export_force(zpool_handle_t *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   313
extern int zpool_import(libzfs_handle_t *, nvlist_t *, const char *,
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   314
    char *altroot);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   315
extern int zpool_import_props(libzfs_handle_t *, nvlist_t *, const char *,
6643
3a34b0dbb107 6625086 changing cachefile doesn't remove old cache on last user
eschrock
parents: 6523
diff changeset
   316
    nvlist_t *, boolean_t);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   317
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   318
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   319
 * Search for pools to import
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   320
 */
6807
1564ba2e93f5 6689452 zfs often fails to import a zpool if several zfs import commands are running at the same time.
ck153898
parents: 6643
diff changeset
   321
extern nvlist_t *zpool_find_import(libzfs_handle_t *, int, char **);
5994
bedab011a2e5 6580270 'zdb [-C|-L] <pool'> can't open alternate root pools
ck153898
parents: 5993
diff changeset
   322
extern nvlist_t *zpool_find_import_cached(libzfs_handle_t *, const char *,
6957
ad855bd47277 6689844 ztest fails with "zdb: can't open ztest: No such device or address"
ck153898
parents: 6865
diff changeset
   323
    char *, uint64_t);
6807
1564ba2e93f5 6689452 zfs often fails to import a zpool if several zfs import commands are running at the same time.
ck153898
parents: 6643
diff changeset
   324
extern nvlist_t *zpool_find_import_byname(libzfs_handle_t *, int, char **,
1564ba2e93f5 6689452 zfs often fails to import a zpool if several zfs import commands are running at the same time.
ck153898
parents: 6643
diff changeset
   325
    char *);
1564ba2e93f5 6689452 zfs often fails to import a zpool if several zfs import commands are running at the same time.
ck153898
parents: 6643
diff changeset
   326
extern nvlist_t *zpool_find_import_byguid(libzfs_handle_t *, int, char **,
1564ba2e93f5 6689452 zfs often fails to import a zpool if several zfs import commands are running at the same time.
ck153898
parents: 6643
diff changeset
   327
    uint64_t);
1564ba2e93f5 6689452 zfs often fails to import a zpool if several zfs import commands are running at the same time.
ck153898
parents: 6643
diff changeset
   328
extern nvlist_t *zpool_find_import_activeok(libzfs_handle_t *, int, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   329
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   330
/*
1354
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   331
 * Miscellaneous pool functions
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   332
 */
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   333
struct zfs_cmd;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   334
10685
931790026ac6 6846163 ZFS continues to use faulted logzilla, bringing system to a crawl
George Wilson <George.Wilson@Sun.COM>
parents: 10594
diff changeset
   335
extern const char *hist_event_table[LOG_END];
931790026ac6 6846163 ZFS continues to use faulted logzilla, bringing system to a crawl
George Wilson <George.Wilson@Sun.COM>
parents: 10594
diff changeset
   336
10594
986cb68d2347 6574286 removing a slog doesn't work
George Wilson <George.Wilson@Sun.COM>
parents: 10588
diff changeset
   337
extern char *zpool_vdev_name(libzfs_handle_t *, zpool_handle_t *, nvlist_t *,
986cb68d2347 6574286 removing a slog doesn't work
George Wilson <George.Wilson@Sun.COM>
parents: 10588
diff changeset
   338
    boolean_t verbose);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   339
extern int zpool_upgrade(zpool_handle_t *, uint64_t);
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
   340
extern int zpool_get_history(zpool_handle_t *, nvlist_t **);
10685
931790026ac6 6846163 ZFS continues to use faulted logzilla, bringing system to a crawl
George Wilson <George.Wilson@Sun.COM>
parents: 10594
diff changeset
   341
extern int zpool_history_unpack(char *, uint64_t, uint64_t *,
931790026ac6 6846163 ZFS continues to use faulted logzilla, bringing system to a crawl
George Wilson <George.Wilson@Sun.COM>
parents: 10594
diff changeset
   342
    nvlist_t ***, uint_t *);
4988
db8abd9846d4 6595467 libzfs consumers should be allowed to write their own history (or none at all)
ek110237
parents: 4849
diff changeset
   343
extern void zpool_set_history_str(const char *subcommand, int argc,
db8abd9846d4 6595467 libzfs consumers should be allowed to write their own history (or none at all)
ek110237
parents: 4849
diff changeset
   344
    char **argv, char *history_str);
db8abd9846d4 6595467 libzfs consumers should be allowed to write their own history (or none at all)
ek110237
parents: 4849
diff changeset
   345
extern int zpool_stage_history(libzfs_handle_t *, const char *);
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   346
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
   347
    size_t len);
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   348
extern int zfs_ioctl(libzfs_handle_t *, int, struct zfs_cmd *);
9160
1517e6edbc6f PSARC/2008/760 Boot configuration Service
Sherry Moore <Sherry.Moore@Sun.COM>
parents: 8845
diff changeset
   349
extern int zpool_get_physpath(zpool_handle_t *, char *, size_t);
1517e6edbc6f PSARC/2008/760 Boot configuration Service
Sherry Moore <Sherry.Moore@Sun.COM>
parents: 8845
diff changeset
   350
1354
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   351
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   352
 * Basic handle manipulations.  These functions do not create or destroy the
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   353
 * underlying datasets, only the references to them.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   354
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   355
extern zfs_handle_t *zfs_open(libzfs_handle_t *, const char *, int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   356
extern void zfs_close(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   357
extern zfs_type_t zfs_get_type(const zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   358
extern const char *zfs_get_name(const zfs_handle_t *);
7538
18c2451107fd PSARC 2008/469 Excluding snapshot info from 'zfs list'
Rich Morris <Richard.Morris@Sun.COM>
parents: 7326
diff changeset
   359
extern zpool_handle_t *zfs_get_pool_handle(const zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   360
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   361
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   362
 * 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
   363
 * and are found in sys/fs/zfs.h.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   364
 */
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   365
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   366
/*
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   367
 * zfs dataset property management
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   368
 */
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   369
extern const char *zfs_prop_default_string(zfs_prop_t);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   370
extern uint64_t zfs_prop_default_numeric(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   371
extern const char *zfs_prop_column_name(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   372
extern boolean_t zfs_prop_align_right(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   373
7184
9508660f9c27 PSARC 2008/223 Pool root file system properties via zpool(1M)
timh
parents: 7042
diff changeset
   374
extern nvlist_t *zfs_valid_proplist(libzfs_handle_t *, zfs_type_t,
9508660f9c27 PSARC 2008/223 Pool root file system properties via zpool(1M)
timh
parents: 7042
diff changeset
   375
    nvlist_t *, uint64_t, zfs_handle_t *, const char *);
9508660f9c27 PSARC 2008/223 Pool root file system properties via zpool(1M)
timh
parents: 7042
diff changeset
   376
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   377
extern const char *zfs_prop_to_name(zfs_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   378
extern int zfs_prop_set(zfs_handle_t *, const char *, const char *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   379
extern int zfs_prop_get(zfs_handle_t *, zfs_prop_t, char *, size_t,
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   380
    zprop_source_t *, char *, size_t, boolean_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   381
extern int zfs_prop_get_numeric(zfs_handle_t *, zfs_prop_t, uint64_t *,
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   382
    zprop_source_t *, char *, size_t);
9469
4f68f041ddcd 6824968 add ZFS userquota support to rquotad
Lin Ling <Lin.Ling@Sun.COM>
parents: 9396
diff changeset
   383
extern int zfs_prop_get_userquota_int(zfs_handle_t *zhp, const char *propname,
4f68f041ddcd 6824968 add ZFS userquota support to rquotad
Lin Ling <Lin.Ling@Sun.COM>
parents: 9396
diff changeset
   384
    uint64_t *propvalue);
9396
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   385
extern int zfs_prop_get_userquota(zfs_handle_t *zhp, const char *propname,
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   386
    char *propbuf, int proplen, boolean_t literal);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   387
extern uint64_t zfs_prop_get_int(zfs_handle_t *, zfs_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   388
extern int zfs_prop_inherit(zfs_handle_t *, const char *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   389
extern const char *zfs_prop_values(zfs_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   390
extern int zfs_prop_is_string(zfs_prop_t prop);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   391
extern nvlist_t *zfs_get_user_props(zfs_handle_t *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   392
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   393
typedef struct zprop_list {
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   394
	int		pl_prop;
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   395
	char		*pl_user_prop;
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   396
	struct zprop_list *pl_next;
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   397
	boolean_t	pl_all;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   398
	size_t		pl_width;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   399
	boolean_t	pl_fixed;
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   400
} zprop_list_t;
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   401
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   402
extern int zfs_expand_proplist(zfs_handle_t *, zprop_list_t **);
8802
010b31dd4c53 6773366 "zfs list" memory consumption can be further reduced
Sanjeev Bagewadi <Sanjeev.Bagewadi@Sun.COM>
parents: 8584
diff changeset
   403
extern void zfs_prune_proplist(zfs_handle_t *, uint8_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   404
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   405
#define	ZFS_MOUNTPOINT_NONE	"none"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   406
#define	ZFS_MOUNTPOINT_LEGACY	"legacy"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   407
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   408
/*
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   409
 * zpool property management
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   410
 */
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   411
extern int zpool_expand_proplist(zpool_handle_t *, zprop_list_t **);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   412
extern const char *zpool_prop_default_string(zpool_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   413
extern uint64_t zpool_prop_default_numeric(zpool_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   414
extern const char *zpool_prop_column_name(zpool_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   415
extern boolean_t zpool_prop_align_right(zpool_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   416
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   417
/*
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   418
 * Functions shared by zfs and zpool property management.
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   419
 */
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   420
extern int zprop_iter(zprop_func func, void *cb, boolean_t show_all,
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   421
    boolean_t ordered, zfs_type_t type);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   422
extern int zprop_get_list(libzfs_handle_t *, char *, zprop_list_t **,
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   423
    zfs_type_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   424
extern void zprop_free_list(zprop_list_t *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   425
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   426
/*
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   427
 * Functions for printing zfs or zpool properties
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   428
 */
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   429
typedef struct zprop_get_cbdata {
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   430
	int cb_sources;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   431
	int cb_columns[4];
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   432
	int cb_colwidths[5];
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   433
	boolean_t cb_scripted;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   434
	boolean_t cb_literal;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   435
	boolean_t cb_first;
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   436
	zprop_list_t *cb_proplist;
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   437
	zfs_type_t cb_type;
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   438
} zprop_get_cbdata_t;
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   439
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   440
void zprop_print_one_property(const char *, zprop_get_cbdata_t *,
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   441
    const char *, const char *, zprop_source_t, const char *);
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   442
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   443
#define	GET_COL_NAME		1
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   444
#define	GET_COL_PROPERTY	2
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   445
#define	GET_COL_VALUE		3
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   446
#define	GET_COL_SOURCE		4
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   447
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   448
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   449
 * Iterator functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   450
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   451
typedef int (*zfs_iter_f)(zfs_handle_t *, void *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   452
extern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   453
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
   454
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
   455
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
   456
extern int zfs_iter_snapshots(zfs_handle_t *, zfs_iter_f, void *);
10342
108f0058f837 6833815 scheduled snapshots deleted per snapshot policy can lead to replication failures
Chris Kirby <chris.kirby@sun.com>
parents: 10242
diff changeset
   457
extern int zfs_iter_snapshots_sorted(zfs_handle_t *, zfs_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   458
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   459
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   460
 * Functions to create and destroy datasets.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   461
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   462
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
   463
    nvlist_t *);
4490
abf035049f7f PSARC 2007/199 zfs {create,clone,rename} -p
vb160487
parents: 4451
diff changeset
   464
extern int zfs_create_ancestors(libzfs_handle_t *, const char *);
10242
c40d075fbca6 PSARC/2009/297 zfs snapshot holds
Chris Kirby <chris.kirby@sun.com>
parents: 10151
diff changeset
   465
extern int zfs_destroy(zfs_handle_t *, boolean_t);
c40d075fbca6 PSARC/2009/297 zfs snapshot holds
Chris Kirby <chris.kirby@sun.com>
parents: 10151
diff changeset
   466
extern int zfs_destroy_snaps(zfs_handle_t *, char *, boolean_t);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   467
extern int zfs_clone(zfs_handle_t *, const char *, nvlist_t *);
7265
cc18862247da PSARC/2008/483 ZFS clone -o
ahrens
parents: 7214
diff changeset
   468
extern int zfs_snapshot(libzfs_handle_t *, const char *, boolean_t, nvlist_t *);
5749
78a7afaea267 PSARC/2007/699 zfs rollback -f operative
ahrens
parents: 5713
diff changeset
   469
extern int zfs_rollback(zfs_handle_t *, zfs_handle_t *, boolean_t);
4490
abf035049f7f PSARC 2007/199 zfs {create,clone,rename} -p
vb160487
parents: 4451
diff changeset
   470
extern int zfs_rename(zfs_handle_t *, const char *, boolean_t);
5367
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   471
extern int zfs_send(zfs_handle_t *, const char *, const char *,
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   472
    boolean_t, boolean_t, boolean_t, boolean_t, int);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   473
extern int zfs_promote(zfs_handle_t *);
10342
108f0058f837 6833815 scheduled snapshots deleted per snapshot policy can lead to replication failures
Chris Kirby <chris.kirby@sun.com>
parents: 10242
diff changeset
   474
extern int zfs_hold(zfs_handle_t *, const char *, const char *, boolean_t,
108f0058f837 6833815 scheduled snapshots deleted per snapshot policy can lead to replication failures
Chris Kirby <chris.kirby@sun.com>
parents: 10242
diff changeset
   475
    boolean_t);
108f0058f837 6833815 scheduled snapshots deleted per snapshot policy can lead to replication failures
Chris Kirby <chris.kirby@sun.com>
parents: 10242
diff changeset
   476
extern int zfs_hold_range(zfs_handle_t *, const char *, const char *,
108f0058f837 6833815 scheduled snapshots deleted per snapshot policy can lead to replication failures
Chris Kirby <chris.kirby@sun.com>
parents: 10242
diff changeset
   477
    const char *, boolean_t);
10242
c40d075fbca6 PSARC/2009/297 zfs snapshot holds
Chris Kirby <chris.kirby@sun.com>
parents: 10151
diff changeset
   478
extern int zfs_release(zfs_handle_t *, const char *, const char *, boolean_t);
10342
108f0058f837 6833815 scheduled snapshots deleted per snapshot policy can lead to replication failures
Chris Kirby <chris.kirby@sun.com>
parents: 10242
diff changeset
   479
extern int zfs_release_range(zfs_handle_t *, const char *, const char *,
108f0058f837 6833815 scheduled snapshots deleted per snapshot policy can lead to replication failures
Chris Kirby <chris.kirby@sun.com>
parents: 10242
diff changeset
   480
    const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   481
9554
787363635b6a 6837523 gnu xgettext's useless comments should be filtered
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9469
diff changeset
   482
typedef int (*zfs_userspace_cb_t)(void *arg, const char *domain,
9396
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   483
    uid_t rid, uint64_t space);
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   484
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   485
extern int zfs_userspace(zfs_handle_t *zhp, zfs_userquota_prop_t type,
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   486
    zfs_userspace_cb_t func, void *arg);
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   487
5367
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   488
typedef struct recvflags {
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   489
	/* print informational messages (ie, -v was specified) */
5501
cca063572f37 6625091 zpool cachefile property has incorrect value help message
eschrock
parents: 5450
diff changeset
   490
	int verbose : 1;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   491
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   492
	/* the destination is a prefix, not the exact fs (ie, -d) */
5501
cca063572f37 6625091 zpool cachefile property has incorrect value help message
eschrock
parents: 5450
diff changeset
   493
	int isprefix : 1;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   494
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   495
	/* do not actually do the recv, just check if it would work (ie, -n) */
5501
cca063572f37 6625091 zpool cachefile property has incorrect value help message
eschrock
parents: 5450
diff changeset
   496
	int dryrun : 1;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   497
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   498
	/* rollback/destroy filesystems as necessary (eg, -F) */
5501
cca063572f37 6625091 zpool cachefile property has incorrect value help message
eschrock
parents: 5450
diff changeset
   499
	int force : 1;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   500
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   501
	/* set "canmount=off" on all modified filesystems */
5501
cca063572f37 6625091 zpool cachefile property has incorrect value help message
eschrock
parents: 5450
diff changeset
   502
	int canmountoff : 1;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   503
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   504
	/* byteswap flag is used internally; callers need not specify */
5501
cca063572f37 6625091 zpool cachefile property has incorrect value help message
eschrock
parents: 5450
diff changeset
   505
	int byteswap : 1;
8584
327a1b6dd944 6794452 zfs receive can't restore a root pool
Lori Alt <Lori.Alt@Sun.COM>
parents: 8343
diff changeset
   506
327a1b6dd944 6794452 zfs receive can't restore a root pool
Lori Alt <Lori.Alt@Sun.COM>
parents: 8343
diff changeset
   507
	/* do not mount file systems as they are extracted (private) */
327a1b6dd944 6794452 zfs receive can't restore a root pool
Lori Alt <Lori.Alt@Sun.COM>
parents: 8343
diff changeset
   508
	int nomount : 1;
5367
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   509
} recvflags_t;
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   510
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   511
extern int zfs_receive(libzfs_handle_t *, const char *, recvflags_t,
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   512
    int, avl_tree_t *);
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   513
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   514
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   515
 * Miscellaneous functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   516
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   517
extern const char *zfs_type_to_name(zfs_type_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   518
extern void zfs_refresh_properties(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   519
extern int zfs_name_valid(const char *, zfs_type_t);
3635
63e2169c1249 PSARC 2007/050 zfs list -d
ck153898
parents: 3504
diff changeset
   520
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
   521
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
   522
    zfs_type_t);
5713
f9b7933f3770 PSARC/2007/675 A_MDEV Removal
rm160521
parents: 5501
diff changeset
   523
extern int zfs_spa_version(zfs_handle_t *, int *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   524
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   525
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   526
 * Mount support functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   527
 */
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   528
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
   529
extern boolean_t zfs_is_mounted(zfs_handle_t *, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   530
extern int zfs_mount(zfs_handle_t *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   531
extern int zfs_unmount(zfs_handle_t *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   532
extern int zfs_unmountall(zfs_handle_t *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   533
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   534
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   535
 * Share support functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   536
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   537
extern boolean_t zfs_is_shared(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   538
extern int zfs_share(zfs_handle_t *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   539
extern int zfs_unshare(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   540
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   541
/*
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   542
 * Protocol-specific share support functions.
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   543
 */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   544
extern boolean_t zfs_is_shared_nfs(zfs_handle_t *, char **);
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   545
extern boolean_t zfs_is_shared_smb(zfs_handle_t *, char **);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   546
extern int zfs_share_nfs(zfs_handle_t *);
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   547
extern int zfs_share_smb(zfs_handle_t *);
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   548
extern int zfs_shareall(zfs_handle_t *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   549
extern int zfs_unshare_nfs(zfs_handle_t *, const char *);
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   550
extern int zfs_unshare_smb(zfs_handle_t *, const char *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   551
extern int zfs_unshareall_nfs(zfs_handle_t *);
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   552
extern int zfs_unshareall_smb(zfs_handle_t *);
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   553
extern int zfs_unshareall_bypath(zfs_handle_t *, const char *);
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   554
extern int zfs_unshareall(zfs_handle_t *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   555
extern boolean_t zfs_is_shared_iscsi(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   556
extern int zfs_share_iscsi(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   557
extern int zfs_unshare_iscsi(zfs_handle_t *);
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   558
extern int zfs_iscsi_perm_check(libzfs_handle_t *, char *, ucred_t *);
8845
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   559
extern int zfs_deleg_share_nfs(libzfs_handle_t *, char *, char *, char *,
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   560
    void *, void *, int, zfs_share_op_t);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   561
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   562
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   563
 * When dealing with nvlists, verify() is extremely useful
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   564
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   565
#ifdef NDEBUG
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   566
#define	verify(EX)	((void)(EX))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   567
#else
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   568
#define	verify(EX)	assert(EX)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   569
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   570
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   571
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   572
 * Utility function to convert a number to a human-readable form.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   573
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   574
extern void zfs_nicenum(uint64_t, char *, size_t);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   575
extern int zfs_nicestrtonum(libzfs_handle_t *, const char *, uint64_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   576
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   577
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   578
 * Given a device or file, determine if it is part of a pool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   579
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   580
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
   581
    boolean_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   582
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   583
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   584
 * ftyp special.  Read the label from a given device.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   585
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   586
extern int zpool_read_label(int, nvlist_t **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   587
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5994
diff changeset
   588
/* is this zvol valid for use as a dump device? */
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5994
diff changeset
   589
extern int zvol_check_dump_config(char *);
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5994
diff changeset
   590
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   591
/*
8845
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   592
 * Management interfaces for SMB ACL files
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   593
 */
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   594
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   595
int zfs_smb_acl_add(libzfs_handle_t *, char *, char *, char *);
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   596
int zfs_smb_acl_remove(libzfs_handle_t *, char *, char *, char *);
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   597
int zfs_smb_acl_purge(libzfs_handle_t *, char *, char *);
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   598
int zfs_smb_acl_rename(libzfs_handle_t *, char *, char *, char *, char *);
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   599
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   600
/*
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   601
 * Enable and disable datasets within a pool by mounting/unmounting and
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   602
 * sharing/unsharing them.
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   603
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   604
extern int zpool_enable_datasets(zpool_handle_t *, const char *, int);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   605
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
   606
10817
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   607
/*
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   608
 * Mappings between vdev and FRU.
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   609
 */
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   610
extern void libzfs_fru_refresh(libzfs_handle_t *);
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   611
extern const char *libzfs_fru_lookup(libzfs_handle_t *, const char *);
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   612
extern const char *libzfs_fru_devpath(libzfs_handle_t *, const char *);
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   613
extern boolean_t libzfs_fru_compare(libzfs_handle_t *, const char *,
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   614
    const char *);
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   615
extern boolean_t libzfs_fru_notself(libzfs_handle_t *, const char *);
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   616
extern int zpool_fru_set(zpool_handle_t *, uint64_t, const char *);
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   617
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   618
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   619
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   620
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   621
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   622
#endif	/* _LIBZFS_H */