usr/src/lib/libzfs/common/libzfs.h
author Christopher Siden <chris.siden@delphix.com>
Mon, 21 May 2012 12:11:39 -0700
changeset 13700 2889e2596bd6
parent 13686 4bc0783f6064
child 13743 95aba6e49b9f
permissions -rw-r--r--
2619 asynchronous destruction of ZFS file systems 2747 SPA versioning with zfs feature flags Reviewed by: Matt Ahrens <[email protected]> Reviewed by: George Wilson <[email protected]> Reviewed by: Richard Lowe <[email protected]> Reviewed by: Dan Kruchinin <[email protected]> Approved by: Eric Schrock <[email protected]>
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
/*
12296
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11876
diff changeset
    23
 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
13514
417c34452f03 1748 desire support for reguid in zfs
Garrett D'Amore <garrett@nexenta.com>
parents: 13512
diff changeset
    24
 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
13570
3411fd5f1589 1948 zpool list should show more detailed pool information
George Wilson <George.Wilson@delphix.com>
parents: 13524
diff changeset
    25
 * Copyright (c) 2012 by Delphix. All rights reserved.
13686
4bc0783f6064 2703 add mechanism to report ZFS send progress
Bill Pijewski <wdp@joyent.com>
parents: 13677
diff changeset
    26
 * Copyright (c) 2012, Joyent, Inc. All rights reserved.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    27
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    28
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    29
#ifndef	_LIBZFS_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    30
#define	_LIBZFS_H
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>
8228
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
    34
#include <sys/mnttab.h>
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    35
#include <sys/param.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    36
#include <sys/types.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    37
#include <sys/varargs.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    38
#include <sys/fs/zfs.h>
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
    39
#include <sys/avl.h>
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
    40
#include <ucred.h>
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    41
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    42
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    43
extern "C" {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    44
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    45
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    46
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    47
 * Miscellaneous ZFS constants
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    48
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    49
#define	ZFS_MAXNAMELEN		MAXNAMELEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    50
#define	ZPOOL_MAXNAMELEN	MAXNAMELEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    51
#define	ZFS_MAXPROPLEN		MAXPATHLEN
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
    52
#define	ZPOOL_MAXPROPLEN	MAXPATHLEN
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    53
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    54
/*
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    55
 * libzfs errors
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    56
 */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    57
enum {
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    58
	EZFS_NOMEM = 2000,	/* out of memory */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    59
	EZFS_BADPROP,		/* invalid property value */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    60
	EZFS_PROPREADONLY,	/* cannot set readonly property */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    61
	EZFS_PROPTYPE,		/* property does not apply to dataset type */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    62
	EZFS_PROPNONINHERIT,	/* property is not inheritable */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    63
	EZFS_PROPSPACE,		/* bad quota or reservation */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    64
	EZFS_BADTYPE,		/* dataset is not of appropriate type */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    65
	EZFS_BUSY,		/* pool or dataset is busy */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    66
	EZFS_EXISTS,		/* pool or dataset already exists */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    67
	EZFS_NOENT,		/* no such pool or dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    68
	EZFS_BADSTREAM,		/* bad backup stream */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    69
	EZFS_DSREADONLY,	/* dataset is readonly */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    70
	EZFS_VOLTOOBIG,		/* volume is too large for 32-bit system */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    71
	EZFS_INVALIDNAME,	/* invalid dataset name */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    72
	EZFS_BADRESTORE,	/* unable to restore to destination */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    73
	EZFS_BADBACKUP,		/* backup failed */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    74
	EZFS_BADTARGET,		/* bad attach/detach/replace target */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    75
	EZFS_NODEVICE,		/* no such device in pool */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    76
	EZFS_BADDEV,		/* invalid device to add */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    77
	EZFS_NOREPLICAS,	/* no valid replicas */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    78
	EZFS_RESILVERING,	/* currently resilvering */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    79
	EZFS_BADVERSION,	/* unsupported version */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    80
	EZFS_POOLUNAVAIL,	/* pool is currently unavailable */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    81
	EZFS_DEVOVERFLOW,	/* too many devices in one vdev */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    82
	EZFS_BADPATH,		/* must be an absolute path */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    83
	EZFS_CROSSTARGET,	/* rename or clone across pool or dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    84
	EZFS_ZONED,		/* used improperly in local zone */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    85
	EZFS_MOUNTFAILED,	/* failed to mount dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    86
	EZFS_UMOUNTFAILED,	/* failed to unmount dataset */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    87
	EZFS_UNSHARENFSFAILED,	/* unshare(1M) failed */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    88
	EZFS_SHARENFSFAILED,	/* share(1M) failed */
2082
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 */
11807
73a3c0d27389 6911541 'zfs mount' coredump
Sam Falkner <Sam.Falkner@Sun.COM>
parents: 11546
diff changeset
    91
	EZFS_FAULT,		/* bad address */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    92
	EZFS_IO,		/* I/O error */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    93
	EZFS_INTR,		/* signal received */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    94
	EZFS_ISSPARE,		/* device is a hot spare */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    95
	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
    96
	EZFS_RECURSIVE,		/* recursive dependency */
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
    97
	EZFS_NOHISTORY,		/* no history object */
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    98
	EZFS_POOLPROPS,		/* couldn't retrieve pool props */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    99
	EZFS_POOL_NOTSUP,	/* ops not supported for this type of pool */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   100
	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
   101
	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
   102
	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
   103
	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
   104
	EZFS_LABELFAILED,	/* write of label failed */
4543
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 */
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   109
	EZFS_UNSHARESMBFAILED,	/* failed to unshare over smb */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   110
	EZFS_SHARESMBFAILED,	/* failed to share over smb */
5363
36eeffc5336d PSARC 2007/607 ZFS cachefile property
eschrock
parents: 5331
diff changeset
   111
	EZFS_BADCACHE,		/* bad cache file */
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5446
diff changeset
   112
	EZFS_ISL2CACHE,		/* device is for the level 2 ARC */
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5994
diff changeset
   113
	EZFS_VDEVNOTSUP,	/* unsupported vdev type */
7042
46fc4b6db23e 6721094 Setting certain properties on root pools should not be allowed
gw25295
parents: 6957
diff changeset
   114
	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
   115
	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
   116
	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
   117
	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
   118
	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
   119
	EZFS_TAGTOOLONG,	/* snapshot hold/rele: tag too long */
11007
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   120
	EZFS_PIPEFAILED,	/* pipe create failed */
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   121
	EZFS_THREADCREATEFAILED, /* thread create failed */
11422
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   122
	EZFS_POSTSPLIT_ONLINE,	/* onlining a disk after splitting it */
12296
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11876
diff changeset
   123
	EZFS_SCRUBBING,		/* currently scrubbing */
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11876
diff changeset
   124
	EZFS_NO_SCRUB,		/* no active scrub */
13055
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   125
	EZFS_DIFF,		/* general failure of zfs diff */
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   126
	EZFS_DIFFDATA,		/* bad zfs diff data */
13061
bda0decf867b PSARC 2010/306 Read-only ZFS pools
George Wilson <George.Wilson@Sun.COM>
parents: 13055
diff changeset
   127
	EZFS_POOLREADONLY,	/* pool is in read-only mode */
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   128
	EZFS_UNKNOWN
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   129
};
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   130
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   131
/*
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   132
 * The following data structures are all part
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   133
 * of the zfs_allow_t data structure which is
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   134
 * used for printing 'allow' permissions.
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   135
 * It is a linked list of zfs_allow_t's which
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   136
 * then contain avl tree's for user/group/sets/...
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   137
 * and each one of the entries in those trees have
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   138
 * avl tree's for the permissions they belong to and
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   139
 * whether they are local,descendent or local+descendent
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   140
 * permissions.  The AVL trees are used primarily for
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   141
 * sorting purposes, but also so that we can quickly find
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   142
 * a given user and or permission.
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   143
 */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   144
typedef struct zfs_perm_node {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   145
	avl_node_t z_node;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   146
	char z_pname[MAXPATHLEN];
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   147
} zfs_perm_node_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   148
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   149
typedef struct zfs_allow_node {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   150
	avl_node_t z_node;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   151
	char z_key[MAXPATHLEN];		/* name, such as joe */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   152
	avl_tree_t z_localdescend;	/* local+descendent perms */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   153
	avl_tree_t z_local;		/* local permissions */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   154
	avl_tree_t z_descend;		/* descendent permissions */
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   155
} zfs_allow_node_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   156
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   157
typedef struct zfs_allow {
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   158
	struct zfs_allow *z_next;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   159
	char z_setpoint[MAXPATHLEN];
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   160
	avl_tree_t z_sets;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   161
	avl_tree_t z_crperms;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   162
	avl_tree_t z_user;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   163
	avl_tree_t z_group;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   164
	avl_tree_t z_everyone;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   165
} zfs_allow_t;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   166
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   167
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   168
 * Basic handle types
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   169
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   170
typedef struct zfs_handle zfs_handle_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   171
typedef struct zpool_handle zpool_handle_t;
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   172
typedef struct libzfs_handle libzfs_handle_t;
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   173
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   174
/*
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   175
 * Library initialization
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   176
 */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   177
extern libzfs_handle_t *libzfs_init(void);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   178
extern void libzfs_fini(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   179
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   180
extern libzfs_handle_t *zpool_get_handle(zpool_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   181
extern libzfs_handle_t *zfs_get_handle(zfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   182
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   183
extern void libzfs_print_on_error(libzfs_handle_t *, boolean_t);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   184
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   185
extern int libzfs_errno(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   186
extern const char *libzfs_error_action(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   187
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
   188
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
   189
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
   190
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
   191
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
   192
    struct mnttab *);
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   193
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
   194
    const char *, const char *);
51e9ca9ee3a5 6572357 libzfs should do more to avoid mnttab lookups
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 8211
diff changeset
   195
extern void libzfs_mnttab_remove(libzfs_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   196
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   197
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   198
 * Basic handle functions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   199
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   200
extern zpool_handle_t *zpool_open(libzfs_handle_t *, const char *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   201
extern zpool_handle_t *zpool_open_canfail(libzfs_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   202
extern void zpool_close(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   203
extern const char *zpool_get_name(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   204
extern int zpool_get_state(zpool_handle_t *);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   205
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
   206
extern void zpool_free_handles(libzfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   207
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   208
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   209
 * Iterate over all active pools in the system.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   210
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   211
typedef int (*zpool_iter_f)(zpool_handle_t *, void *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   212
extern int zpool_iter(libzfs_handle_t *, zpool_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   213
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   214
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   215
 * Functions to create and destroy pools
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   216
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   217
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
   218
    nvlist_t *, nvlist_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   219
extern int zpool_destroy(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   220
extern int zpool_add(zpool_handle_t *, nvlist_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   221
11422
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   222
typedef struct splitflags {
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   223
	/* do not split, but return the config that would be split off */
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   224
	int dryrun : 1;
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   225
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   226
	/* after splitting, import the pool */
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   227
	int import : 1;
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   228
} splitflags_t;
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   229
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   230
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   231
 * Functions to manipulate pool and vdev state
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   232
 */
12296
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11876
diff changeset
   233
extern int zpool_scan(zpool_handle_t *, pool_scan_func_t);
10921
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10830
diff changeset
   234
extern int zpool_clear(zpool_handle_t *, const char *, nvlist_t *);
13514
417c34452f03 1748 desire support for reguid in zfs
Garrett D'Amore <garrett@nexenta.com>
parents: 13512
diff changeset
   235
extern int zpool_reguid(zpool_handle_t *);
13570
3411fd5f1589 1948 zpool list should show more detailed pool information
George Wilson <George.Wilson@delphix.com>
parents: 13524
diff changeset
   236
extern int zpool_reopen(zpool_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   237
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   238
extern int zpool_vdev_online(zpool_handle_t *, const char *, int,
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   239
    vdev_state_t *);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   240
extern int zpool_vdev_offline(zpool_handle_t *, const char *, boolean_t);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   241
extern int zpool_vdev_attach(zpool_handle_t *, const char *,
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   242
    const char *, nvlist_t *, int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   243
extern int zpool_vdev_detach(zpool_handle_t *, const char *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   244
extern int zpool_vdev_remove(zpool_handle_t *, const char *);
11422
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   245
extern int zpool_vdev_split(zpool_handle_t *, char *, nvlist_t **, nvlist_t *,
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11417
diff changeset
   246
    splitflags_t);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   247
10817
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   248
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
   249
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
   250
extern int zpool_vdev_clear(zpool_handle_t *, uint64_t);
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   251
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5446
diff changeset
   252
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
   253
    boolean_t *, boolean_t *);
9816
847676ec1c5b PSARC 2008/353 zpool autoexpand property
George Wilson <George.Wilson@Sun.COM>
parents: 9701
diff changeset
   254
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
   255
    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
   256
extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   257
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   258
/*
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   259
 * Functions to manage pool properties
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   260
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   261
extern int zpool_set_prop(zpool_handle_t *, const char *, const char *);
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   262
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
   263
    size_t proplen, zprop_source_t *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   264
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
   265
    zprop_source_t *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   266
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   267
extern const char *zpool_prop_to_name(zpool_prop_t);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   268
extern const char *zpool_prop_values(zpool_prop_t);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   269
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   270
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   271
 * Pool health statistics.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   272
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   273
typedef enum {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   274
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   275
	 * 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
   276
	 * event namespace.  Each is associated with a corresponding message ID.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   277
	 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   278
	ZPOOL_STATUS_CORRUPT_CACHE,	/* corrupt /kernel/drv/zpool.cache */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   279
	ZPOOL_STATUS_MISSING_DEV_R,	/* missing device with replicas */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   280
	ZPOOL_STATUS_MISSING_DEV_NR,	/* missing device with no replicas */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   281
	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
   282
	ZPOOL_STATUS_CORRUPT_LABEL_NR,	/* bad device label with no replicas */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   283
	ZPOOL_STATUS_BAD_GUID_SUM,	/* sum of device guids didn't match */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   284
	ZPOOL_STATUS_CORRUPT_POOL,	/* pool metadata is corrupted */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   285
	ZPOOL_STATUS_CORRUPT_DATA,	/* data errors in user (meta)data */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   286
	ZPOOL_STATUS_FAILING_DEV,	/* device experiencing errors */
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   287
	ZPOOL_STATUS_VERSION_NEWER,	/* newer on-disk version */
3975
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   288
	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
   289
	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
   290
	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
   291
	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
   292
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   293
	/*
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   294
	 * If the pool has unsupported features but can still be opened in
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   295
	 * read-only mode, its status is ZPOOL_STATUS_UNSUP_FEAT_WRITE. If the
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   296
	 * pool has unsupported features but cannot be opened at all, its
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   297
	 * status is ZPOOL_STATUS_UNSUP_FEAT_READ.
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   298
	 */
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   299
	ZPOOL_STATUS_UNSUP_FEAT_READ,	/* unsupported features for read */
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   300
	ZPOOL_STATUS_UNSUP_FEAT_WRITE,	/* unsupported features for write */
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   301
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   302
	/*
8343
655db2375fed 6739553 libzfs_status msgid table is out of sync
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 8228
diff changeset
   303
	 * 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
   304
	 * 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
   305
	 * 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
   306
	 */
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   307
	ZPOOL_STATUS_FAULTED_DEV_R,	/* faulted device with replicas */
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   308
	ZPOOL_STATUS_FAULTED_DEV_NR,	/* faulted device with no replicas */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   309
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   310
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   311
	 * 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
   312
	 * requiring administrative attention.  There is no corresponding
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   313
	 * message ID.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   314
	 */
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   315
	ZPOOL_STATUS_VERSION_OLDER,	/* older on-disk version */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   316
	ZPOOL_STATUS_RESILVERING,	/* device being resilvered */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   317
	ZPOOL_STATUS_OFFLINE_DEV,	/* device online */
10151
3e86bccfd4da 6793967 zpool status -x sometimes incorrect.
George Wilson <George.Wilson@Sun.COM>
parents: 9816
diff changeset
   318
	ZPOOL_STATUS_REMOVED_DEV,	/* removed device */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   319
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   320
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   321
	 * Finally, the following indicates a healthy pool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   322
	 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   323
	ZPOOL_STATUS_OK
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   324
} zpool_status_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   325
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   326
extern zpool_status_t zpool_get_status(zpool_handle_t *, char **);
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   327
extern zpool_status_t zpool_import_status(nvlist_t *, char **);
11149
8bad7424e2c2 6903731 need userland dedup stats
George Wilson <George.Wilson@Sun.COM>
parents: 11022
diff changeset
   328
extern void zpool_dump_ddt(const ddt_stat_t *dds, const ddt_histogram_t *ddh);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   329
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   330
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   331
 * Statistics and configuration functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   332
 */
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   333
extern nvlist_t *zpool_get_config(zpool_handle_t *, nvlist_t **);
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   334
extern nvlist_t *zpool_get_features(zpool_handle_t *);
2142
f6e0487aa9a3 6433264 crash when adding spare: nvlist_lookup_string(cnv, "path", &path) == 0
eschrock
parents: 2082
diff changeset
   335
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
   336
extern int zpool_get_errlog(zpool_handle_t *, nvlist_t **);
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   337
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   338
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   339
 * Import and export functions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   340
 */
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
   341
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
   342
extern int zpool_export_force(zpool_handle_t *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   343
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
   344
    char *altroot);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   345
extern int zpool_import_props(libzfs_handle_t *, nvlist_t *, const char *,
12961
b521d551715f 6733267 Allow a pool to be imported with a missing slog
George Wilson <George.Wilson@Sun.COM>
parents: 12798
diff changeset
   346
    nvlist_t *, int);
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   347
extern void zpool_print_unsup_feat(nvlist_t *config);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   348
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   349
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   350
 * Search for pools to import
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   351
 */
11497
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   352
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   353
typedef struct importargs {
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   354
	char **path;		/* a list of paths to search		*/
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   355
	int paths;		/* number of paths to search		*/
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   356
	char *poolname;		/* name of a pool to find		*/
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   357
	uint64_t guid;		/* guid of a pool to find		*/
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   358
	char *cachefile;	/* cachefile to use for import		*/
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   359
	int can_be_active : 1;	/* can the pool be active?		*/
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   360
	int unique : 1;		/* does 'poolname' already exist?	*/
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   361
	int exists : 1;		/* set on return if pool already exists	*/
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   362
} importargs_t;
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   363
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   364
extern nvlist_t *zpool_search_import(libzfs_handle_t *, importargs_t *);
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   365
69b45e632792 6698011 zfs incorrectly reports file systems as children when attempting a rename
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11461
diff changeset
   366
/* legacy pool search routines */
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
   367
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
   368
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
   369
    char *, uint64_t);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   370
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   371
/*
1354
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   372
 * Miscellaneous pool functions
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   373
 */
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   374
struct zfs_cmd;
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   375
12296
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11876
diff changeset
   376
extern const char *zfs_history_event_names[LOG_END];
10685
931790026ac6 6846163 ZFS continues to use faulted logzilla, bringing system to a crawl
George Wilson <George.Wilson@Sun.COM>
parents: 10594
diff changeset
   377
10594
986cb68d2347 6574286 removing a slog doesn't work
George Wilson <George.Wilson@Sun.COM>
parents: 10588
diff changeset
   378
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
   379
    boolean_t verbose);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   380
extern int zpool_upgrade(zpool_handle_t *, uint64_t);
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
   381
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
   382
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
   383
    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
   384
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
   385
    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
   386
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
   387
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
   388
    size_t len);
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4490
diff changeset
   389
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
   390
extern int zpool_get_physpath(zpool_handle_t *, char *, size_t);
10921
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10830
diff changeset
   391
extern void zpool_explain_recover(libzfs_handle_t *, const char *, int,
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10830
diff changeset
   392
    nvlist_t *);
9160
1517e6edbc6f PSARC/2008/760 Boot configuration Service
Sherry Moore <Sherry.Moore@Sun.COM>
parents: 8845
diff changeset
   393
1354
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   394
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   395
 * Basic handle manipulations.  These functions do not create or destroy the
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   396
 * underlying datasets, only the references to them.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   397
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   398
extern zfs_handle_t *zfs_open(libzfs_handle_t *, const char *, int);
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   399
extern zfs_handle_t *zfs_handle_dup(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   400
extern void zfs_close(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   401
extern zfs_type_t zfs_get_type(const zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   402
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
   403
extern zpool_handle_t *zfs_get_pool_handle(const zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   404
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   405
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   406
 * 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
   407
 * and are found in sys/fs/zfs.h.
789
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
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
 * zfs dataset property management
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   412
 */
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   413
extern const char *zfs_prop_default_string(zfs_prop_t);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   414
extern uint64_t zfs_prop_default_numeric(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   415
extern const char *zfs_prop_column_name(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   416
extern boolean_t zfs_prop_align_right(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   417
7184
9508660f9c27 PSARC 2008/223 Pool root file system properties via zpool(1M)
timh
parents: 7042
diff changeset
   418
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
   419
    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
   420
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   421
extern const char *zfs_prop_to_name(zfs_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   422
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
   423
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
   424
    zprop_source_t *, char *, size_t, boolean_t);
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   425
extern int zfs_prop_get_recvd(zfs_handle_t *, const char *, char *, size_t,
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   426
    boolean_t);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   427
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
   428
    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
   429
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
   430
    uint64_t *propvalue);
9396
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   431
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
   432
    char *propbuf, int proplen, boolean_t literal);
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   433
extern int zfs_prop_get_written_int(zfs_handle_t *zhp, const char *propname,
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   434
    uint64_t *propvalue);
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   435
extern int zfs_prop_get_written(zfs_handle_t *zhp, const char *propname,
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   436
    char *propbuf, int proplen, boolean_t literal);
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   437
extern int zfs_prop_get_feature(zfs_handle_t *zhp, const char *propname,
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   438
    char *buf, size_t len);
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   439
extern int zfs_get_snapused_int(zfs_handle_t *firstsnap, zfs_handle_t *lastsnap,
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   440
    uint64_t *usedp);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   441
extern uint64_t zfs_prop_get_int(zfs_handle_t *, zfs_prop_t);
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   442
extern int zfs_prop_inherit(zfs_handle_t *, const char *, boolean_t);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   443
extern const char *zfs_prop_values(zfs_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   444
extern int zfs_prop_is_string(zfs_prop_t prop);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   445
extern nvlist_t *zfs_get_user_props(zfs_handle_t *);
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   446
extern nvlist_t *zfs_get_recvd_props(zfs_handle_t *);
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   447
extern nvlist_t *zfs_get_clones_nvl(zfs_handle_t *);
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   448
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   449
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   450
typedef struct zprop_list {
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   451
	int		pl_prop;
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   452
	char		*pl_user_prop;
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   453
	struct zprop_list *pl_next;
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   454
	boolean_t	pl_all;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   455
	size_t		pl_width;
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   456
	size_t		pl_recvd_width;
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   457
	boolean_t	pl_fixed;
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   458
} zprop_list_t;
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   459
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   460
extern int zfs_expand_proplist(zfs_handle_t *, zprop_list_t **, boolean_t);
8802
010b31dd4c53 6773366 "zfs list" memory consumption can be further reduced
Sanjeev Bagewadi <Sanjeev.Bagewadi@Sun.COM>
parents: 8584
diff changeset
   461
extern void zfs_prune_proplist(zfs_handle_t *, uint8_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   462
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   463
#define	ZFS_MOUNTPOINT_NONE	"none"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   464
#define	ZFS_MOUNTPOINT_LEGACY	"legacy"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   465
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   466
#define	ZFS_FEATURE_DISABLED	"disabled"
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   467
#define	ZFS_FEATURE_ENABLED	"enabled"
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   468
#define	ZFS_FEATURE_ACTIVE	"active"
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   469
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   470
#define	ZFS_UNSUPPORTED_INACTIVE	"inactive"
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   471
#define	ZFS_UNSUPPORTED_READONLY	"readonly"
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   472
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   473
/*
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   474
 * zpool property management
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   475
 */
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   476
extern int zpool_expand_proplist(zpool_handle_t *, zprop_list_t **);
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   477
extern int zpool_prop_get_feature(zpool_handle_t *, const char *, char *,
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13686
diff changeset
   478
    size_t);
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   479
extern const char *zpool_prop_default_string(zpool_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   480
extern uint64_t zpool_prop_default_numeric(zpool_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   481
extern const char *zpool_prop_column_name(zpool_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   482
extern boolean_t zpool_prop_align_right(zpool_prop_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   483
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   484
/*
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   485
 * Functions shared by zfs and zpool property management.
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   486
 */
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   487
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
   488
    boolean_t ordered, zfs_type_t type);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   489
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
   490
    zfs_type_t);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   491
extern void zprop_free_list(zprop_list_t *);
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   492
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   493
#define	ZFS_GET_NCOLS	5
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   494
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   495
typedef enum {
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   496
	GET_COL_NONE,
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   497
	GET_COL_NAME,
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   498
	GET_COL_PROPERTY,
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   499
	GET_COL_VALUE,
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   500
	GET_COL_RECVD,
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   501
	GET_COL_SOURCE
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   502
} zfs_get_column_t;
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   503
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   504
/*
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   505
 * Functions for printing zfs or zpool properties
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   506
 */
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   507
typedef struct zprop_get_cbdata {
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   508
	int cb_sources;
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   509
	zfs_get_column_t cb_columns[ZFS_GET_NCOLS];
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   510
	int cb_colwidths[ZFS_GET_NCOLS + 1];
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   511
	boolean_t cb_scripted;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   512
	boolean_t cb_literal;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   513
	boolean_t cb_first;
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   514
	zprop_list_t *cb_proplist;
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   515
	zfs_type_t cb_type;
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   516
} zprop_get_cbdata_t;
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   517
5094
71a3e95fb9e2 PSARC 2007/342 Enhanced ZFS Pool Properties
lling
parents: 4988
diff changeset
   518
void zprop_print_one_property(const char *, zprop_get_cbdata_t *,
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   519
    const char *, const char *, zprop_source_t, const char *,
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   520
    const char *);
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   521
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   522
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   523
 * Iterator functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   524
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   525
typedef int (*zfs_iter_f)(zfs_handle_t *, void *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   526
extern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   527
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
   528
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
   529
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
   530
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
   531
extern int zfs_iter_snapshots_sorted(zfs_handle_t *, zfs_iter_f, void *);
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   532
extern int zfs_iter_snapspec(zfs_handle_t *, const char *, zfs_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   533
13037
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   534
typedef struct get_all_cb {
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   535
	zfs_handle_t	**cb_handles;
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   536
	size_t		cb_alloc;
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   537
	size_t		cb_used;
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   538
	boolean_t	cb_verbose;
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   539
	int		(*cb_getone)(zfs_handle_t *, void *);
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   540
} get_all_cb_t;
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   541
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   542
void libzfs_add_handle(get_all_cb_t *, zfs_handle_t *);
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   543
int libzfs_dataset_cmp(const void *, const void *);
e0bc0b6c7c2f 6935194 'zfs share|unshare' a volume returns zero
Eric Taylor <Eric.Taylor@oracle.com>
parents: 12961
diff changeset
   544
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   545
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   546
 * Functions to create and destroy datasets.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   547
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   548
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
   549
    nvlist_t *);
4490
abf035049f7f PSARC 2007/199 zfs {create,clone,rename} -p
vb160487
parents: 4451
diff changeset
   550
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
   551
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
   552
extern int zfs_destroy_snaps(zfs_handle_t *, char *, boolean_t);
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   553
extern int zfs_destroy_snaps_nvl(zfs_handle_t *, nvlist_t *, boolean_t);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   554
extern int zfs_clone(zfs_handle_t *, const char *, nvlist_t *);
7265
cc18862247da PSARC/2008/483 ZFS clone -o
ahrens
parents: 7214
diff changeset
   555
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
   556
extern int zfs_rollback(zfs_handle_t *, zfs_handle_t *, boolean_t);
13677
a0cbef703c12 2635 'zfs rename -f' to perform force unmount
Eric Schrock <Eric.Schrock@delphix.com>
parents: 13570
diff changeset
   557
extern int zfs_rename(zfs_handle_t *, const char *, boolean_t, boolean_t);
11007
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   558
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   559
typedef struct sendflags {
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   560
	/* print informational messages (ie, -v was specified) */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   561
	boolean_t verbose;
11007
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   562
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   563
	/* recursive send  (ie, -R) */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   564
	boolean_t replicate;
11007
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   565
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   566
	/* for incrementals, do all intermediate snapshots */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   567
	boolean_t doall;
11007
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   568
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   569
	/* if dataset is a clone, do incremental from its origin */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   570
	boolean_t fromorigin;
11007
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   571
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   572
	/* do deduplication */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   573
	boolean_t dedup;
11022
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   574
63ab26072e41 PSARC 2009/510 ZFS received properties
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11007
diff changeset
   575
	/* send properties (ie, -p) */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   576
	boolean_t props;
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   577
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   578
	/* do not send (no-op, ie. -n) */
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   579
	boolean_t dryrun;
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   580
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   581
	/* parsable verbose output (ie. -P) */
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   582
	boolean_t parsable;
13686
4bc0783f6064 2703 add mechanism to report ZFS send progress
Bill Pijewski <wdp@joyent.com>
parents: 13677
diff changeset
   583
4bc0783f6064 2703 add mechanism to report ZFS send progress
Bill Pijewski <wdp@joyent.com>
parents: 13677
diff changeset
   584
	/* show progress (ie. -v) */
4bc0783f6064 2703 add mechanism to report ZFS send progress
Bill Pijewski <wdp@joyent.com>
parents: 13677
diff changeset
   585
	boolean_t progress;
11007
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   586
} sendflags_t;
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   587
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   588
typedef boolean_t (snapfilter_cb_t)(zfs_handle_t *, void *);
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   589
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   590
extern int zfs_send(zfs_handle_t *, const char *, const char *,
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   591
    sendflags_t *, int, snapfilter_cb_t, void *, nvlist_t **);
11007
216d8396182e PSARC/2009/557 ZFS send dedup
Lori Alt <Lori.Alt@Sun.COM>
parents: 10921
diff changeset
   592
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   593
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
   594
extern int zfs_hold(zfs_handle_t *, const char *, const char *, boolean_t,
12798
f6c8601080b4 6938335 zfs send -R can still miss renamed snapshots
Chris Kirby <Chris.Kirby@oracle.com>
parents: 12527
diff changeset
   595
    boolean_t, boolean_t, int, uint64_t, uint64_t);
10242
c40d075fbca6 PSARC/2009/297 zfs snapshot holds
Chris Kirby <chris.kirby@sun.com>
parents: 10151
diff changeset
   596
extern int zfs_release(zfs_handle_t *, const char *, const char *, boolean_t);
13246
fe5d6e0b0bce 278 get rid zfs of python and pyzfs dependencies
Alexander Stetsenko <ams@nexenta.com>
parents: 13061
diff changeset
   597
extern int zfs_get_holds(zfs_handle_t *, nvlist_t **);
11449
a6be67f77b9f 6429996 zvols don't reserve enough space for requisite meta data
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 11422
diff changeset
   598
extern uint64_t zvol_volsize_to_reservation(uint64_t, nvlist_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   599
9554
787363635b6a 6837523 gnu xgettext's useless comments should be filtered
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9469
diff changeset
   600
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
   601
    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
   602
13246
fe5d6e0b0bce 278 get rid zfs of python and pyzfs dependencies
Alexander Stetsenko <ams@nexenta.com>
parents: 13061
diff changeset
   603
extern int zfs_userspace(zfs_handle_t *, zfs_userquota_prop_t,
fe5d6e0b0bce 278 get rid zfs of python and pyzfs dependencies
Alexander Stetsenko <ams@nexenta.com>
parents: 13061
diff changeset
   604
    zfs_userspace_cb_t, void *);
fe5d6e0b0bce 278 get rid zfs of python and pyzfs dependencies
Alexander Stetsenko <ams@nexenta.com>
parents: 13061
diff changeset
   605
fe5d6e0b0bce 278 get rid zfs of python and pyzfs dependencies
Alexander Stetsenko <ams@nexenta.com>
parents: 13061
diff changeset
   606
extern int zfs_get_fsacl(zfs_handle_t *, nvlist_t **);
fe5d6e0b0bce 278 get rid zfs of python and pyzfs dependencies
Alexander Stetsenko <ams@nexenta.com>
parents: 13061
diff changeset
   607
extern int zfs_set_fsacl(zfs_handle_t *, boolean_t, nvlist_t *);
9396
f41cf682d0d3 PSARC/2009/204 ZFS user/group quotas & space accounting
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 9160
diff changeset
   608
5367
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   609
typedef struct recvflags {
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   610
	/* print informational messages (ie, -v was specified) */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   611
	boolean_t verbose;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   612
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   613
	/* the destination is a prefix, not the exact fs (ie, -d) */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   614
	boolean_t isprefix;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   615
11461
5113530c9d30 PSARC 2009/663 zfs receive -e
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11449
diff changeset
   616
	/*
5113530c9d30 PSARC 2009/663 zfs receive -e
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11449
diff changeset
   617
	 * Only the tail of the sent snapshot path is appended to the
5113530c9d30 PSARC 2009/663 zfs receive -e
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11449
diff changeset
   618
	 * destination to determine the received snapshot name (ie, -e).
5113530c9d30 PSARC 2009/663 zfs receive -e
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11449
diff changeset
   619
	 */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   620
	boolean_t istail;
11461
5113530c9d30 PSARC 2009/663 zfs receive -e
Tom Erickson <Tom.Erickson@Sun.COM>
parents: 11449
diff changeset
   621
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   622
	/* do not actually do the recv, just check if it would work (ie, -n) */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   623
	boolean_t dryrun;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   624
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   625
	/* rollback/destroy filesystems as necessary (eg, -F) */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   626
	boolean_t force;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   627
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   628
	/* set "canmount=off" on all modified filesystems */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   629
	boolean_t canmountoff;
5446
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   630
51fbc14b301d 6421210 zfs rollback without unmounting
ahrens
parents: 5367
diff changeset
   631
	/* byteswap flag is used internally; callers need not specify */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   632
	boolean_t byteswap;
8584
327a1b6dd944 6794452 zfs receive can't restore a root pool
Lori Alt <Lori.Alt@Sun.COM>
parents: 8343
diff changeset
   633
327a1b6dd944 6794452 zfs receive can't restore a root pool
Lori Alt <Lori.Alt@Sun.COM>
parents: 8343
diff changeset
   634
	/* do not mount file systems as they are extracted (private) */
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   635
	boolean_t nomount;
5367
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   636
} recvflags_t;
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   637
13524
f0e12b33f77c 1644 add ZFS "clones" property
Matthew Ahrens <matt@delphix.com>
parents: 13514
diff changeset
   638
extern int zfs_receive(libzfs_handle_t *, const char *, recvflags_t *,
5367
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   639
    int, avl_tree_t *);
c40abbe796be PSARC/2007/574 zfs send -R
ahrens
parents: 5363
diff changeset
   640
13055
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   641
typedef enum diff_flags {
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   642
	ZFS_DIFF_PARSEABLE = 0x1,
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   643
	ZFS_DIFF_TIMESTAMP = 0x2,
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   644
	ZFS_DIFF_CLASSIFY = 0x4
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   645
} diff_flags_t;
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   646
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   647
extern int zfs_show_diffs(zfs_handle_t *, int, const char *, const char *,
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   648
    int);
8c712bbb18ea PSARC 2010/105 zfs diff
Tim Haley <Tim.Haley@Sun.COM>
parents: 13037
diff changeset
   649
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   650
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   651
 * Miscellaneous functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   652
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   653
extern const char *zfs_type_to_name(zfs_type_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   654
extern void zfs_refresh_properties(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   655
extern int zfs_name_valid(const char *, zfs_type_t);
3635
63e2169c1249 PSARC 2007/050 zfs list -d
ck153898
parents: 3504
diff changeset
   656
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
   657
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
   658
    zfs_type_t);
5713
f9b7933f3770 PSARC/2007/675 A_MDEV Removal
rm160521
parents: 5501
diff changeset
   659
extern int zfs_spa_version(zfs_handle_t *, int *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   660
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   661
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   662
 * Mount support functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   663
 */
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   664
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
   665
extern boolean_t zfs_is_mounted(zfs_handle_t *, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   666
extern int zfs_mount(zfs_handle_t *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   667
extern int zfs_unmount(zfs_handle_t *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   668
extern int zfs_unmountall(zfs_handle_t *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   669
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   670
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   671
 * Share support functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   672
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   673
extern boolean_t zfs_is_shared(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   674
extern int zfs_share(zfs_handle_t *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   675
extern int zfs_unshare(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   676
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   677
/*
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4276
diff changeset
   678
 * Protocol-specific share support functions.
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   679
 */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   680
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
   681
extern boolean_t zfs_is_shared_smb(zfs_handle_t *, char **);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   682
extern int zfs_share_nfs(zfs_handle_t *);
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   683
extern int zfs_share_smb(zfs_handle_t *);
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   684
extern int zfs_shareall(zfs_handle_t *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   685
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
   686
extern int zfs_unshare_smb(zfs_handle_t *, const char *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   687
extern int zfs_unshareall_nfs(zfs_handle_t *);
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   688
extern int zfs_unshareall_smb(zfs_handle_t *);
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5094
diff changeset
   689
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
   690
extern int zfs_unshareall(zfs_handle_t *);
8845
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   691
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
   692
    void *, void *, int, zfs_share_op_t);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   693
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   694
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   695
 * When dealing with nvlists, verify() is extremely useful
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   696
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   697
#ifdef NDEBUG
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   698
#define	verify(EX)	((void)(EX))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   699
#else
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   700
#define	verify(EX)	assert(EX)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   701
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   702
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   703
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   704
 * Utility function to convert a number to a human-readable form.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   705
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   706
extern void zfs_nicenum(uint64_t, char *, size_t);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   707
extern int zfs_nicestrtonum(libzfs_handle_t *, const char *, uint64_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   708
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   709
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   710
 * Given a device or file, determine if it is part of a pool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   711
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   712
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
   713
    boolean_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   714
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   715
/*
10830
dd88d8700b3e 6893087 removing and inserting a faulted vdev clears faulted state
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10817
diff changeset
   716
 * Label manipulation.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   717
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   718
extern int zpool_read_label(int, nvlist_t **);
10830
dd88d8700b3e 6893087 removing and inserting a faulted vdev clears faulted state
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10817
diff changeset
   719
extern int zpool_clear_label(int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   720
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5994
diff changeset
   721
/* is this zvol valid for use as a dump device? */
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5994
diff changeset
   722
extern int zvol_check_dump_config(char *);
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5994
diff changeset
   723
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   724
/*
8845
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   725
 * Management interfaces for SMB ACL files
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   726
 */
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   727
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   728
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
   729
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
   730
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
   731
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
   732
91af0d9c0790 6800942 smb_session_create() incorrectly stores IP addresses
Alan Wright <amw@Sun.COM>
parents: 8811
diff changeset
   733
/*
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   734
 * Enable and disable datasets within a pool by mounting/unmounting and
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   735
 * sharing/unsharing them.
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   736
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   737
extern int zpool_enable_datasets(zpool_handle_t *, const char *, int);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   738
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
   739
10817
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   740
/*
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   741
 * 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
   742
 */
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   743
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
   744
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
   745
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
   746
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
   747
    const char *);
7dfde45252f0 6889826 ZFS retire agent should be able to repair pools
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10685
diff changeset
   748
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
   749
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
   750
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   751
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   752
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   753
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   754
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   755
#endif	/* _LIBZFS_H */