usr/src/lib/libzfs/common/libzfs.h
author ek110237
Thu, 05 Apr 2007 13:22:27 -0700
changeset 3975 6674f5d79069
parent 3912 f6891a60bd72
child 3978 2dd668007b7a
permissions -rw-r--r--
6282725 hostname/hostid should be stored in the label
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     1
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     2
 * CDDL HEADER START
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     3
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
1485
e971e58d18f6 6322005 support for persistent offline
lling
parents: 1356
diff changeset
     5
 * Common Development and Distribution License (the "License").
e971e58d18f6 6322005 support for persistent offline
lling
parents: 1356
diff changeset
     6
 * You may not use this file except in compliance with the License.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     7
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    11
 * and limitations under the License.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    12
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    18
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    19
 * CDDL HEADER END
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    20
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    21
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    22
/*
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
    23
 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    24
 * Use is subject to license terms.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    25
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    26
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    27
#ifndef	_LIBZFS_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    28
#define	_LIBZFS_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    29
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    30
#pragma ident	"%Z%%M%	%I%	%E% SMI"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    31
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    32
#include <assert.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    33
#include <libnvpair.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    34
#include <sys/param.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    35
#include <sys/types.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    36
#include <sys/varargs.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    37
#include <sys/fs/zfs.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    38
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    39
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    40
extern "C" {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    41
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    42
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    43
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    44
 * Miscellaneous ZFS constants
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    45
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    46
#define	ZFS_MAXNAMELEN		MAXNAMELEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    47
#define	ZPOOL_MAXNAMELEN	MAXNAMELEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    48
#define	ZFS_MAXPROPLEN		MAXPATHLEN
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    49
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    50
/*
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    51
 * libzfs errors
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    52
 */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    53
enum {
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    54
	EZFS_NOMEM = 2000,	/* out of memory */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    55
	EZFS_BADPROP,		/* invalid property value */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    56
	EZFS_PROPREADONLY,	/* cannot set readonly property */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    57
	EZFS_PROPTYPE,		/* property does not apply to dataset type */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    58
	EZFS_PROPNONINHERIT,	/* property is not inheritable */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    59
	EZFS_PROPSPACE,		/* bad quota or reservation */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    60
	EZFS_BADTYPE,		/* dataset is not of appropriate type */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    61
	EZFS_BUSY,		/* pool or dataset is busy */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    62
	EZFS_EXISTS,		/* pool or dataset already exists */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    63
	EZFS_NOENT,		/* no such pool or dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    64
	EZFS_BADSTREAM,		/* bad backup stream */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    65
	EZFS_DSREADONLY,	/* dataset is readonly */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    66
	EZFS_VOLTOOBIG,		/* volume is too large for 32-bit system */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    67
	EZFS_VOLHASDATA,	/* volume already contains data */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    68
	EZFS_INVALIDNAME,	/* invalid dataset name */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    69
	EZFS_BADRESTORE,	/* unable to restore to destination */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    70
	EZFS_BADBACKUP,		/* backup failed */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    71
	EZFS_BADTARGET,		/* bad attach/detach/replace target */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    72
	EZFS_NODEVICE,		/* no such device in pool */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    73
	EZFS_BADDEV,		/* invalid device to add */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    74
	EZFS_NOREPLICAS,	/* no valid replicas */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    75
	EZFS_RESILVERING,	/* currently resilvering */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    76
	EZFS_BADVERSION,	/* unsupported version */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    77
	EZFS_POOLUNAVAIL,	/* pool is currently unavailable */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    78
	EZFS_DEVOVERFLOW,	/* too many devices in one vdev */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    79
	EZFS_BADPATH,		/* must be an absolute path */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    80
	EZFS_CROSSTARGET,	/* rename or clone across pool or dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    81
	EZFS_ZONED,		/* used improperly in local zone */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    82
	EZFS_MOUNTFAILED,	/* failed to mount dataset */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    83
	EZFS_UMOUNTFAILED,	/* failed to unmount dataset */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    84
	EZFS_UNSHARENFSFAILED,	/* unshare(1M) failed */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    85
	EZFS_SHARENFSFAILED,	/* share(1M) failed */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    86
	EZFS_DEVLINKS,		/* failed to create zvol links */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    87
	EZFS_PERM,		/* permission denied */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    88
	EZFS_NOSPC,		/* out of space */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    89
	EZFS_IO,		/* I/O error */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    90
	EZFS_INTR,		/* signal received */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    91
	EZFS_ISSPARE,		/* device is a hot spare */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
    92
	EZFS_INVALCONFIG,	/* invalid vdev configuration */
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
    93
	EZFS_RECURSIVE,		/* recursive dependency */
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
    94
	EZFS_NOHISTORY,		/* no history object */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    95
	EZFS_UNSHAREISCSIFAILED, /* iscsitgtd failed request to unshare */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
    96
	EZFS_SHAREISCSIFAILED,	/* iscsitgtd failed request to share */
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    97
	EZFS_POOLPROPS,		/* couldn't retrieve pool props */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    98
	EZFS_POOL_NOTSUP,	/* ops not supported for this type of pool */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
    99
	EZFS_POOL_INVALARG,	/* invalid argument for this pool operation */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   100
	EZFS_UNKNOWN
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   101
};
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   102
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   103
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   104
 * Basic handle types
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   105
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   106
typedef struct zfs_handle zfs_handle_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   107
typedef struct zpool_handle zpool_handle_t;
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   108
typedef struct libzfs_handle libzfs_handle_t;
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   109
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   110
/*
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   111
 * Library initialization
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   112
 */
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   113
extern libzfs_handle_t *libzfs_init(void);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   114
extern void libzfs_fini(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   115
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   116
extern libzfs_handle_t *zpool_get_handle(zpool_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   117
extern libzfs_handle_t *zfs_get_handle(zfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   118
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   119
extern void libzfs_print_on_error(libzfs_handle_t *, boolean_t);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   120
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   121
extern int libzfs_errno(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   122
extern const char *libzfs_error_action(libzfs_handle_t *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   123
extern const char *libzfs_error_description(libzfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   124
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   125
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   126
 * Basic handle functions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   127
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   128
extern zpool_handle_t *zpool_open(libzfs_handle_t *, const char *);
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   129
extern zpool_handle_t *zpool_open_canfail(libzfs_handle_t *, const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   130
extern void zpool_close(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   131
extern const char *zpool_get_name(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   132
extern uint64_t zpool_get_guid(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   133
extern uint64_t zpool_get_space_used(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   134
extern uint64_t zpool_get_space_total(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   135
extern int zpool_get_root(zpool_handle_t *, char *, size_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   136
extern int zpool_get_state(zpool_handle_t *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   137
extern uint64_t zpool_get_version(zpool_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   138
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   139
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   140
 * Iterate over all active pools in the system.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   141
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   142
typedef int (*zpool_iter_f)(zpool_handle_t *, void *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   143
extern int zpool_iter(libzfs_handle_t *, zpool_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   144
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   145
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   146
 * Functions to create and destroy pools
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   147
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   148
extern int zpool_create(libzfs_handle_t *, const char *, nvlist_t *,
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   149
    const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   150
extern int zpool_destroy(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   151
extern int zpool_add(zpool_handle_t *, nvlist_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   152
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   153
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   154
 * Functions to manipulate pool and vdev state
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   155
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   156
extern int zpool_scrub(zpool_handle_t *, pool_scrub_type_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   157
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   158
extern int zpool_vdev_online(zpool_handle_t *, const char *);
1485
e971e58d18f6 6322005 support for persistent offline
lling
parents: 1356
diff changeset
   159
extern int zpool_vdev_offline(zpool_handle_t *, const char *, int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   160
extern int zpool_vdev_attach(zpool_handle_t *, const char *, const char *,
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   161
    nvlist_t *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   162
extern int zpool_vdev_detach(zpool_handle_t *, const char *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   163
extern int zpool_vdev_remove(zpool_handle_t *, const char *);
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   164
extern int zpool_clear(zpool_handle_t *, const char *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   165
extern nvlist_t *zpool_find_vdev(zpool_handle_t *, const char *, boolean_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   166
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   167
/*
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   168
 * Functions to manage pool properties
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   169
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   170
extern int zpool_set_prop(zpool_handle_t *, const char *, const char *);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   171
extern int zpool_get_prop(zpool_handle_t *, zfs_prop_t, char *,
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   172
	size_t proplen, zfs_source_t *);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   173
extern const char *zpool_prop_to_name(zpool_prop_t);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   174
extern const char *zpool_prop_values(zpool_prop_t);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   175
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   176
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   177
 * Pool health statistics.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   178
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   179
typedef enum {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   180
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   181
	 * 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
   182
	 * event namespace.  Each is associated with a corresponding message ID.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   183
	 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   184
	ZPOOL_STATUS_CORRUPT_CACHE,	/* corrupt /kernel/drv/zpool.cache */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   185
	ZPOOL_STATUS_MISSING_DEV_R,	/* missing device with replicas */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   186
	ZPOOL_STATUS_MISSING_DEV_NR,	/* missing device with no replicas */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   187
	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
   188
	ZPOOL_STATUS_CORRUPT_LABEL_NR,	/* bad device label with no replicas */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   189
	ZPOOL_STATUS_BAD_GUID_SUM,	/* sum of device guids didn't match */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   190
	ZPOOL_STATUS_CORRUPT_POOL,	/* pool metadata is corrupted */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   191
	ZPOOL_STATUS_CORRUPT_DATA,	/* data errors in user (meta)data */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   192
	ZPOOL_STATUS_FAILING_DEV,	/* device experiencing errors */
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   193
	ZPOOL_STATUS_VERSION_NEWER,	/* newer on-disk version */
3975
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   194
	ZPOOL_STATUS_HOSTID_MISMATCH,	/* last accessed by another system */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   195
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   196
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   197
	 * 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
   198
	 * requiring administrative attention.  There is no corresponding
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   199
	 * message ID.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   200
	 */
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   201
	ZPOOL_STATUS_VERSION_OLDER,	/* older on-disk version */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   202
	ZPOOL_STATUS_RESILVERING,	/* device being resilvered */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   203
	ZPOOL_STATUS_OFFLINE_DEV,	/* device online */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   204
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   205
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   206
	 * Finally, the following indicates a healthy pool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   207
	 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   208
	ZPOOL_STATUS_OK
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   209
} zpool_status_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   210
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   211
extern zpool_status_t zpool_get_status(zpool_handle_t *, char **);
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   212
extern zpool_status_t zpool_import_status(nvlist_t *, char **);
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
 * Statistics and configuration functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   216
 */
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   217
extern nvlist_t *zpool_get_config(zpool_handle_t *, nvlist_t **);
2142
f6e0487aa9a3 6433264 crash when adding spare: nvlist_lookup_string(cnv, "path", &path) == 0
eschrock
parents: 2082
diff changeset
   218
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
   219
extern int zpool_get_errlog(zpool_handle_t *, nvlist_t **);
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 1485
diff changeset
   220
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   221
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   222
 * Import and export functions
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   223
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   224
extern int zpool_export(zpool_handle_t *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   225
extern int zpool_import(libzfs_handle_t *, nvlist_t *, const char *,
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   226
    const char *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   227
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   228
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   229
 * Search for pools to import
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   230
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   231
extern nvlist_t *zpool_find_import(libzfs_handle_t *, int, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   232
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   233
/*
1354
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   234
 * Miscellaneous pool functions
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   235
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   236
extern char *zpool_vdev_name(libzfs_handle_t *, zpool_handle_t *, nvlist_t *);
1760
e1ad2821c30d PSARC 2006/206 zpool upgrade
eschrock
parents: 1749
diff changeset
   237
extern int zpool_upgrade(zpool_handle_t *);
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
   238
extern int zpool_get_history(zpool_handle_t *, nvlist_t **);
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
   239
extern void zpool_log_history(libzfs_handle_t *, int, char **, const char *,
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2885
diff changeset
   240
    boolean_t, boolean_t);
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   241
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
   242
    size_t len);
1354
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   243
81359ee1ee63 6362672 import gets confused about overlapping slices
eschrock
parents: 1352
diff changeset
   244
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   245
 * Basic handle manipulations.  These functions do not create or destroy the
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   246
 * underlying datasets, only the references to them.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   247
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   248
extern zfs_handle_t *zfs_open(libzfs_handle_t *, const char *, int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   249
extern void zfs_close(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   250
extern zfs_type_t zfs_get_type(const zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   251
extern const char *zfs_get_name(const zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   252
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   253
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   254
 * 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
   255
 * and are found in sys/fs/zfs.h.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   256
 */
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   257
extern const char *zfs_prop_to_name(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   258
extern int zfs_prop_set(zfs_handle_t *, const char *, const char *);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   259
extern int zfs_prop_get(zfs_handle_t *, zfs_prop_t, char *, size_t,
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   260
    zfs_source_t *, char *, size_t, boolean_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   261
extern int zfs_prop_get_numeric(zfs_handle_t *, zfs_prop_t, uint64_t *,
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   262
    zfs_source_t *, char *, size_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   263
extern uint64_t zfs_prop_get_int(zfs_handle_t *, zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   264
extern const char *zfs_prop_get_string(zfs_handle_t *, zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   265
extern int zfs_prop_inherit(zfs_handle_t *, const char *);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   266
extern const char *zfs_prop_values(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   267
extern int zfs_prop_valid_for_type(zfs_prop_t, int);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   268
extern const char *zfs_prop_default_string(zfs_prop_t prop);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   269
extern uint64_t zfs_prop_default_numeric(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   270
extern int zfs_prop_is_string(zfs_prop_t prop);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   271
extern const char *zfs_prop_column_name(zfs_prop_t);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   272
extern boolean_t zfs_prop_align_right(zfs_prop_t);
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   273
extern void nicebool(int value, char *buf, size_t buflen);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   274
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   275
typedef struct zfs_proplist {
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   276
	zfs_prop_t	pl_prop;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   277
	char		*pl_user_prop;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   278
	struct zfs_proplist *pl_next;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   279
	boolean_t	pl_all;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   280
	size_t		pl_width;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   281
	boolean_t	pl_fixed;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   282
} zfs_proplist_t;
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   283
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   284
typedef zfs_proplist_t zpool_proplist_t;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   285
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   286
extern int zfs_get_proplist(libzfs_handle_t *, char *, zfs_proplist_t **);
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   287
extern int zpool_get_proplist(libzfs_handle_t *, char *, zpool_proplist_t **);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   288
extern int zfs_expand_proplist(zfs_handle_t *, zfs_proplist_t **);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   289
extern int zpool_expand_proplist(zpool_handle_t *, zpool_proplist_t **);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   290
extern void zfs_free_proplist(zfs_proplist_t *);
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   291
extern nvlist_t *zfs_get_user_props(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   292
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   293
#define	ZFS_MOUNTPOINT_NONE	"none"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   294
#define	ZFS_MOUNTPOINT_LEGACY	"legacy"
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   295
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   296
/*
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   297
 * Functions for printing properties from zfs/zpool
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   298
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   299
typedef struct libzfs_get_cbdata {
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   300
	int cb_sources;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   301
	int cb_columns[4];
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   302
	int cb_colwidths[5];
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   303
	boolean_t cb_scripted;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   304
	boolean_t cb_literal;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   305
	boolean_t cb_first;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   306
	zfs_proplist_t *cb_proplist;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   307
} libzfs_get_cbdata_t;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   308
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   309
void libzfs_print_one_property(const char *, libzfs_get_cbdata_t *,
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   310
    const char *, const char *, zfs_source_t, const char *);
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   311
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   312
#define	GET_COL_NAME		1
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   313
#define	GET_COL_PROPERTY	2
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   314
#define	GET_COL_VALUE		3
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   315
#define	GET_COL_SOURCE		4
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   316
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3635
diff changeset
   317
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   318
 * Iterator functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   319
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   320
typedef int (*zfs_iter_f)(zfs_handle_t *, void *);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   321
extern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   322
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
   323
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
   324
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
   325
extern int zfs_iter_snapshots(zfs_handle_t *, zfs_iter_f, void *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   326
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   327
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   328
 * Functions to create and destroy datasets.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   329
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   330
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
   331
    nvlist_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   332
extern int zfs_destroy(zfs_handle_t *);
2199
712a788c2dfd PSARC 2006/388 snapshot -r
ahrens
parents: 2142
diff changeset
   333
extern int zfs_destroy_snaps(zfs_handle_t *, char *);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   334
extern int zfs_clone(zfs_handle_t *, const char *, nvlist_t *);
2199
712a788c2dfd PSARC 2006/388 snapshot -r
ahrens
parents: 2142
diff changeset
   335
extern int zfs_snapshot(libzfs_handle_t *, const char *, boolean_t);
1294
87b43e5de5ee 6364129 need to unmount any child datasets before doing the rollback
lling
parents: 1003
diff changeset
   336
extern int zfs_rollback(zfs_handle_t *, zfs_handle_t *, int);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   337
extern int zfs_rename(zfs_handle_t *, const char *);
3504
6eb2466ff1c9 6516175 zfs_send()/zfs_receive() should take file descriptor arguments
ahl
parents: 3444
diff changeset
   338
extern int zfs_send(zfs_handle_t *, const char *, int);
2665
7b208a92357b PSARC 2006/479 zfs receive -F
nd150628
parents: 2500
diff changeset
   339
extern int zfs_receive(libzfs_handle_t *, const char *, int, int, int,
3504
6eb2466ff1c9 6516175 zfs_send()/zfs_receive() should take file descriptor arguments
ahl
parents: 3444
diff changeset
   340
    boolean_t, int);
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   341
extern int zfs_promote(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   342
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   343
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   344
 * Miscellaneous functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   345
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   346
extern const char *zfs_type_to_name(zfs_type_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   347
extern void zfs_refresh_properties(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   348
extern int zfs_name_valid(const char *, zfs_type_t);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   349
extern int zfs_disable(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   350
extern int zfs_enable(zfs_handle_t *);
3635
63e2169c1249 PSARC 2007/050 zfs list -d
ck153898
parents: 3504
diff changeset
   351
extern zfs_handle_t *zfs_path_to_zhandle(libzfs_handle_t *, char *, zfs_type_t);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   352
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   353
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   354
 * Mount support functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   355
 */
3444
dc160a70a50d 6410433 'zpool status -v' would be more useful with filenames
ek110237
parents: 3126
diff changeset
   356
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
   357
extern boolean_t zfs_is_mounted(zfs_handle_t *, char **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   358
extern int zfs_mount(zfs_handle_t *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   359
extern int zfs_unmount(zfs_handle_t *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   360
extern int zfs_unmountall(zfs_handle_t *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   361
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   362
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   363
 * Share support functions.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   364
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   365
extern boolean_t zfs_is_shared(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   366
extern int zfs_share(zfs_handle_t *);
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   367
extern int zfs_unshare(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   368
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   369
/*
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   370
 * Protocol-specifc share support functions.
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   371
 */
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   372
extern boolean_t zfs_is_shared_nfs(zfs_handle_t *, char **);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   373
extern int zfs_share_nfs(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   374
extern int zfs_unshare_nfs(zfs_handle_t *, const char *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   375
extern int zfs_unshareall_nfs(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   376
extern boolean_t zfs_is_shared_iscsi(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   377
extern int zfs_share_iscsi(zfs_handle_t *);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   378
extern int zfs_unshare_iscsi(zfs_handle_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   379
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   380
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   381
 * When dealing with nvlists, verify() is extremely useful
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   382
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   383
#ifdef NDEBUG
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   384
#define	verify(EX)	((void)(EX))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   385
#else
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   386
#define	verify(EX)	assert(EX)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   387
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   388
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   389
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   390
 * Utility function to convert a number to a human-readable form.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   391
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   392
extern void zfs_nicenum(uint64_t, char *, size_t);
2676
5cee47eddab6 PSARC 2006/486 ZFS canmount property
eschrock
parents: 2665
diff changeset
   393
extern int zfs_nicestrtonum(libzfs_handle_t *, const char *, uint64_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   394
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   395
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   396
 * Pool destroy special.  Remove the device information without destroying
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   397
 * the underlying dataset.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   398
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   399
extern int zfs_remove_link(zfs_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   400
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   401
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   402
 * Given a device or file, determine if it is part of a pool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   403
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   404
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
   405
    boolean_t *);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   406
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   407
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   408
 * ftyp special.  Read the label from a given device.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   409
 */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1760
diff changeset
   410
extern int zpool_read_label(int, nvlist_t **);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   411
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   412
/*
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   413
 * Create and remove zvol /dev links.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   414
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   415
extern int zpool_create_zvol_links(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   416
extern int zpool_remove_zvol_links(zpool_handle_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   417
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   418
/*
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   419
 * Enable and disable datasets within a pool by mounting/unmounting and
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   420
 * sharing/unsharing them.
2474
c001ad7e0c25 6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents: 2199
diff changeset
   421
 */
3126
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   422
extern int zpool_enable_datasets(zpool_handle_t *, const char *, int);
4f4fb617fdd0 PSARC 2006/622 iSCSI/ZFS Integration
ahl
parents: 2926
diff changeset
   423
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
   424
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   425
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   426
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   427
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   428
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   429
#endif	/* _LIBZFS_H */