usr/src/lib/libzpool/common/sys/zfs_context.h
author Matthew Ahrens <Matthew.Ahrens@Sun.COM>
Tue, 14 Oct 2008 15:57:18 -0700
changeset 7837 001de5627df3
parent 7468 23915842aa09
child 8662 18153249ee93
permissions -rw-r--r--
6333409 traversal code should be able to issue multiple reads in parallel 6418042 want traversal in depth-first pre-order for quicker 'zfs send' 6757112 zvol dump code is extra complicated 6725668 want ::zfs_blkstats to show block type stats after scrub 6725675 dmu traverse code has extraneous features 6725680 P2CROSS is confusing to use 6725698 zvol dump device should always be 128k 6729696 sync causes scrub or resilver to pause for up to 30s 6730101 online recv can cause scrub to miss some blocks 6752226 assertion failed in dbuf_verify: db->db.db_size >= dn->dn_datablksz 6577985 panic when zfs send a snapshot with i/o errors 6755042 zdb -Lbc counts block several times in case of checksum errors
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
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
     5
 * Common Development and Distribution License (the "License").
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
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
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    21
/*
5959
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
    22
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    23
 * Use is subject to license terms.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    24
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    25
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    26
#ifndef _SYS_ZFS_CONTEXT_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    27
#define	_SYS_ZFS_CONTEXT_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    28
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    29
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    30
extern "C" {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    31
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    32
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    33
#define	_SYS_MUTEX_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    34
#define	_SYS_RWLOCK_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    35
#define	_SYS_CONDVAR_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    36
#define	_SYS_SYSTM_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    37
#define	_SYS_DEBUG_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    38
#define	_SYS_T_LOCK_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    39
#define	_SYS_VNODE_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    40
#define	_SYS_VFS_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    41
#define	_SYS_SUNDDI_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    42
#define	_SYS_CALLB_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    43
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    44
#include <stdio.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    45
#include <stdlib.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    46
#include <stddef.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    47
#include <stdarg.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    48
#include <fcntl.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    49
#include <unistd.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    50
#include <errno.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    51
#include <string.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    52
#include <strings.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    53
#include <synch.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    54
#include <thread.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    55
#include <assert.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    56
#include <alloca.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    57
#include <umem.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    58
#include <limits.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    59
#include <atomic.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    60
#include <dirent.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    61
#include <time.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    62
#include <sys/note.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    63
#include <sys/types.h>
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
    64
#include <sys/cred.h>
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    65
#include <sys/sysmacros.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    66
#include <sys/bitmap.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    67
#include <sys/resource.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    68
#include <sys/byteorder.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    69
#include <sys/list.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    70
#include <sys/uio.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    71
#include <sys/zfs_debug.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    72
#include <sys/sdt.h>
3403
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
    73
#include <sys/kstat.h>
5498
334b476844ca 6622831 normalization properties are not preserved by "zfs send"
timh
parents: 5331
diff changeset
    74
#include <sys/u8_textprep.h>
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4108
diff changeset
    75
#include <sys/sysevent/eventdefs.h>
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    76
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    77
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    78
 * Debugging
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    79
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    80
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    81
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    82
 * Note that we are not using the debugging levels.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    83
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    84
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    85
#define	CE_CONT		0	/* continuation		*/
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    86
#define	CE_NOTE		1	/* notice		*/
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    87
#define	CE_WARN		2	/* warning		*/
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    88
#define	CE_PANIC	3	/* panic		*/
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    89
#define	CE_IGNORE	4	/* print nothing	*/
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    90
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    91
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    92
 * ZFS debugging
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    93
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    94
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    95
#ifdef ZFS_DEBUG
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    96
extern void dprintf_setup(int *argc, char **argv);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    97
#endif /* ZFS_DEBUG */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    98
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    99
extern void cmn_err(int, const char *, ...);
3713
00e75dc8b749 6527325 want more assertions in space map code
ahrens
parents: 3403
diff changeset
   100
extern void vcmn_err(int, const char *, __va_list);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   101
extern void panic(const char *, ...);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   102
extern void vpanic(const char *, __va_list);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   103
5329
33cb98223b2d PSARC 2007/567 zpool failmode property
gw25295
parents: 4831
diff changeset
   104
#define	fm_panic	panic
33cb98223b2d PSARC 2007/567 zpool failmode property
gw25295
parents: 4831
diff changeset
   105
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   106
/* This definition is copied from assert.h. */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   107
#if defined(__STDC__)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   108
#if __STDC_VERSION__ - 0 >= 199901L
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   109
#define	verify(EX) (void)((EX) || \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   110
	(__assert_c99(#EX, __FILE__, __LINE__, __func__), 0))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   111
#else
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   112
#define	verify(EX) (void)((EX) || (__assert(#EX, __FILE__, __LINE__), 0))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   113
#endif /* __STDC_VERSION__ - 0 >= 199901L */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   114
#else
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   115
#define	verify(EX) (void)((EX) || (_assert("EX", __FILE__, __LINE__), 0))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   116
#endif	/* __STDC__ */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   117
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   118
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   119
#define	VERIFY	verify
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   120
#define	ASSERT	assert
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   121
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   122
extern void __assert(const char *, const char *, int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   123
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   124
#ifdef lint
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   125
#define	VERIFY3_IMPL(x, y, z, t)	if (x == z) ((void)0)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   126
#else
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   127
/* BEGIN CSTYLED */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   128
#define	VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE) do { \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   129
	const TYPE __left = (TYPE)(LEFT); \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   130
	const TYPE __right = (TYPE)(RIGHT); \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   131
	if (!(__left OP __right)) { \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   132
		char *__buf = alloca(256); \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   133
		(void) snprintf(__buf, 256, "%s %s %s (0x%llx %s 0x%llx)", \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   134
			#LEFT, #OP, #RIGHT, \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   135
			(u_longlong_t)__left, #OP, (u_longlong_t)__right); \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   136
		__assert(__buf, __FILE__, __LINE__); \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   137
	} \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   138
_NOTE(CONSTCOND) } while (0)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   139
/* END CSTYLED */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   140
#endif /* lint */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   141
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   142
#define	VERIFY3S(x, y, z)	VERIFY3_IMPL(x, y, z, int64_t)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   143
#define	VERIFY3U(x, y, z)	VERIFY3_IMPL(x, y, z, uint64_t)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   144
#define	VERIFY3P(x, y, z)	VERIFY3_IMPL(x, y, z, uintptr_t)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   145
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   146
#ifdef NDEBUG
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   147
#define	ASSERT3S(x, y, z)	((void)0)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   148
#define	ASSERT3U(x, y, z)	((void)0)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   149
#define	ASSERT3P(x, y, z)	((void)0)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   150
#else
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   151
#define	ASSERT3S(x, y, z)	VERIFY3S(x, y, z)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   152
#define	ASSERT3U(x, y, z)	VERIFY3U(x, y, z)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   153
#define	ASSERT3P(x, y, z)	VERIFY3P(x, y, z)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   154
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   155
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   156
/*
4451
24fbf2d7a5d7 PSARC 2007/197 ZFS hotplug
eschrock
parents: 4108
diff changeset
   157
 * DTrace SDT probes have different signatures in userland than they do in
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   158
 * kernel.  If they're being used in kernel code, re-define them out of
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   159
 * existence for their counterparts in libzpool.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   160
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   161
7468
23915842aa09 6687412 zfs stuck issuing small txg
Mark Maybee <Mark.Maybee@Sun.COM>
parents: 6245
diff changeset
   162
#ifdef DTRACE_PROBE
23915842aa09 6687412 zfs stuck issuing small txg
Mark Maybee <Mark.Maybee@Sun.COM>
parents: 6245
diff changeset
   163
#undef	DTRACE_PROBE
23915842aa09 6687412 zfs stuck issuing small txg
Mark Maybee <Mark.Maybee@Sun.COM>
parents: 6245
diff changeset
   164
#define	DTRACE_PROBE(a)	((void)0)
23915842aa09 6687412 zfs stuck issuing small txg
Mark Maybee <Mark.Maybee@Sun.COM>
parents: 6245
diff changeset
   165
#endif	/* DTRACE_PROBE */
23915842aa09 6687412 zfs stuck issuing small txg
Mark Maybee <Mark.Maybee@Sun.COM>
parents: 6245
diff changeset
   166
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   167
#ifdef DTRACE_PROBE1
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   168
#undef	DTRACE_PROBE1
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   169
#define	DTRACE_PROBE1(a, b, c)	((void)0)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   170
#endif	/* DTRACE_PROBE1 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   171
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   172
#ifdef DTRACE_PROBE2
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   173
#undef	DTRACE_PROBE2
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   174
#define	DTRACE_PROBE2(a, b, c, d, e)	((void)0)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   175
#endif	/* DTRACE_PROBE2 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   176
1596
2e2377ccbf85 6395371 ASSERT in dmu_tx_count_free: blkid + i < dn->dn_phys->dn_nblkptr
ahrens
parents: 1544
diff changeset
   177
#ifdef DTRACE_PROBE3
2e2377ccbf85 6395371 ASSERT in dmu_tx_count_free: blkid + i < dn->dn_phys->dn_nblkptr
ahrens
parents: 1544
diff changeset
   178
#undef	DTRACE_PROBE3
2e2377ccbf85 6395371 ASSERT in dmu_tx_count_free: blkid + i < dn->dn_phys->dn_nblkptr
ahrens
parents: 1544
diff changeset
   179
#define	DTRACE_PROBE3(a, b, c, d, e, f, g)	((void)0)
2e2377ccbf85 6395371 ASSERT in dmu_tx_count_free: blkid + i < dn->dn_phys->dn_nblkptr
ahrens
parents: 1544
diff changeset
   180
#endif	/* DTRACE_PROBE3 */
2e2377ccbf85 6395371 ASSERT in dmu_tx_count_free: blkid + i < dn->dn_phys->dn_nblkptr
ahrens
parents: 1544
diff changeset
   181
2981
b80f5da0b8ed 6485955 need more dtrace probes
ahrens
parents: 2856
diff changeset
   182
#ifdef DTRACE_PROBE4
b80f5da0b8ed 6485955 need more dtrace probes
ahrens
parents: 2856
diff changeset
   183
#undef	DTRACE_PROBE4
b80f5da0b8ed 6485955 need more dtrace probes
ahrens
parents: 2856
diff changeset
   184
#define	DTRACE_PROBE4(a, b, c, d, e, f, g, h, i)	((void)0)
b80f5da0b8ed 6485955 need more dtrace probes
ahrens
parents: 2856
diff changeset
   185
#endif	/* DTRACE_PROBE4 */
b80f5da0b8ed 6485955 need more dtrace probes
ahrens
parents: 2856
diff changeset
   186
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   187
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   188
 * Threads
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   189
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   190
#define	curthread	((void *)(uintptr_t)thr_self())
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   191
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   192
typedef struct kthread kthread_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   193
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   194
#define	thread_create(stk, stksize, func, arg, len, pp, state, pri)	\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   195
	zk_thread_create(func, arg)
2856
6f4d5ee1906a 6463348 ZFS code could be more portable
nd150628
parents: 1635
diff changeset
   196
#define	thread_exit() thr_exit(NULL)
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   197
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   198
extern kthread_t *zk_thread_create(void (*func)(), void *arg);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   199
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   200
#define	issig(why)	(FALSE)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   201
#define	ISSIG(thr, why)	(FALSE)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   202
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   203
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   204
 * Mutexes
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   205
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   206
typedef struct kmutex {
4831
41ec732c6d9f 6584470 zdb needs to initialize the bpl_lock mutex
gw25295
parents: 4543
diff changeset
   207
	void		*m_owner;
41ec732c6d9f 6584470 zdb needs to initialize the bpl_lock mutex
gw25295
parents: 4543
diff changeset
   208
	boolean_t	initialized;
41ec732c6d9f 6584470 zdb needs to initialize the bpl_lock mutex
gw25295
parents: 4543
diff changeset
   209
	mutex_t		m_lock;
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   210
} kmutex_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   211
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   212
#define	MUTEX_DEFAULT	USYNC_THREAD
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   213
#undef MUTEX_HELD
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   214
#define	MUTEX_HELD(m) _mutex_held(&(m)->m_lock)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   215
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   216
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   217
 * Argh -- we have to get cheesy here because the kernel and userland
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   218
 * have different signatures for the same routine.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   219
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   220
extern int _mutex_init(mutex_t *mp, int type, void *arg);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   221
extern int _mutex_destroy(mutex_t *mp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   222
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   223
#define	mutex_init(mp, b, c, d)		zmutex_init((kmutex_t *)(mp))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   224
#define	mutex_destroy(mp)		zmutex_destroy((kmutex_t *)(mp))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   225
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   226
extern void zmutex_init(kmutex_t *mp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   227
extern void zmutex_destroy(kmutex_t *mp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   228
extern void mutex_enter(kmutex_t *mp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   229
extern void mutex_exit(kmutex_t *mp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   230
extern int mutex_tryenter(kmutex_t *mp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   231
extern void *mutex_owner(kmutex_t *mp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   232
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   233
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   234
 * RW locks
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   235
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   236
typedef struct krwlock {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   237
	void		*rw_owner;
4831
41ec732c6d9f 6584470 zdb needs to initialize the bpl_lock mutex
gw25295
parents: 4543
diff changeset
   238
	boolean_t	initialized;
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   239
	rwlock_t	rw_lock;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   240
} krwlock_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   241
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   242
typedef int krw_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   243
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   244
#define	RW_READER	0
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   245
#define	RW_WRITER	1
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   246
#define	RW_DEFAULT	USYNC_THREAD
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   247
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   248
#undef RW_READ_HELD
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   249
#define	RW_READ_HELD(x)		_rw_read_held(&(x)->rw_lock)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   250
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   251
#undef RW_WRITE_HELD
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   252
#define	RW_WRITE_HELD(x)	_rw_write_held(&(x)->rw_lock)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   253
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   254
extern void rw_init(krwlock_t *rwlp, char *name, int type, void *arg);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   255
extern void rw_destroy(krwlock_t *rwlp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   256
extern void rw_enter(krwlock_t *rwlp, krw_t rw);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   257
extern int rw_tryenter(krwlock_t *rwlp, krw_t rw);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   258
extern int rw_tryupgrade(krwlock_t *rwlp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   259
extern void rw_exit(krwlock_t *rwlp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   260
#define	rw_downgrade(rwlp) do { } while (0)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   261
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   262
extern uid_t crgetuid(cred_t *cr);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   263
extern gid_t crgetgid(cred_t *cr);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   264
extern int crgetngroups(cred_t *cr);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   265
extern gid_t *crgetgroups(cred_t *cr);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   266
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   267
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   268
 * Condition variables
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   269
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   270
typedef cond_t kcondvar_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   271
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   272
#define	CV_DEFAULT	USYNC_THREAD
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   273
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   274
extern void cv_init(kcondvar_t *cv, char *name, int type, void *arg);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   275
extern void cv_destroy(kcondvar_t *cv);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   276
extern void cv_wait(kcondvar_t *cv, kmutex_t *mp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   277
extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   278
extern void cv_signal(kcondvar_t *cv);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   279
extern void cv_broadcast(kcondvar_t *cv);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   280
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   281
/*
3403
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
   282
 * kstat creation, installation and deletion
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
   283
 */
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
   284
extern kstat_t *kstat_create(char *, int,
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
   285
    char *, char *, uchar_t, ulong_t, uchar_t);
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
   286
extern void kstat_install(kstat_t *);
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
   287
extern void kstat_delete(kstat_t *);
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
   288
e52013d23622 6510807 ARC statistics should be exported via kstat
bmc
parents: 2981
diff changeset
   289
/*
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   290
 * Kernel memory
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   291
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   292
#define	KM_SLEEP		UMEM_NOFAIL
6245
1a2a7cfb9f26 6429205 each zpool needs to monitor its throughput and throttle heavy writers
maybee
parents: 5959
diff changeset
   293
#define	KM_PUSHPAGE		KM_SLEEP
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   294
#define	KM_NOSLEEP		UMEM_DEFAULT
849
8d799fd81a9b 6345023 /dev/zfs fails to open once ZFS module is unloaded
bonwick
parents: 789
diff changeset
   295
#define	KMC_NODEBUG		UMC_NODEBUG
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   296
#define	kmem_alloc(_s, _f)	umem_alloc(_s, _f)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   297
#define	kmem_zalloc(_s, _f)	umem_zalloc(_s, _f)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   298
#define	kmem_free(_b, _s)	umem_free(_b, _s)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   299
#define	kmem_cache_create(_a, _b, _c, _d, _e, _f, _g, _h, _i) \
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   300
	umem_cache_create(_a, _b, _c, _d, _e, _f, _g, _h, _i)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   301
#define	kmem_cache_destroy(_c)	umem_cache_destroy(_c)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   302
#define	kmem_cache_alloc(_c, _f) umem_cache_alloc(_c, _f)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   303
#define	kmem_cache_free(_c, _b)	umem_cache_free(_c, _b)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   304
#define	kmem_debugging()	0
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   305
#define	kmem_cache_reap_now(c)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   306
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   307
typedef umem_cache_t kmem_cache_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   308
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   309
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   310
 * Task queues
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   311
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   312
typedef struct taskq taskq_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   313
typedef uintptr_t taskqid_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   314
typedef void (task_func_t)(void *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   315
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   316
#define	TASKQ_PREPOPULATE	0x0001
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   317
#define	TASKQ_CPR_SAFE		0x0002	/* Use CPR safe protocol */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   318
#define	TASKQ_DYNAMIC		0x0004	/* Use dynamic thread scheduling */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   319
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   320
#define	TQ_SLEEP	KM_SLEEP	/* Can block for memory */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   321
#define	TQ_NOSLEEP	KM_NOSLEEP	/* cannot block for memory; may fail */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   322
#define	TQ_NOQUEUE	0x02	/* Do not enqueue if can't dispatch */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   323
7837
001de5627df3 6333409 traversal code should be able to issue multiple reads in parallel
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 7468
diff changeset
   324
extern taskq_t *system_taskq;
001de5627df3 6333409 traversal code should be able to issue multiple reads in parallel
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 7468
diff changeset
   325
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   326
extern taskq_t	*taskq_create(const char *, int, pri_t, int, int, uint_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   327
extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   328
extern void	taskq_destroy(taskq_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   329
extern void	taskq_wait(taskq_t *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   330
extern int	taskq_member(taskq_t *, void *);
7837
001de5627df3 6333409 traversal code should be able to issue multiple reads in parallel
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 7468
diff changeset
   331
extern void	system_taskq_init(void);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   332
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   333
#define	XVA_MAPSIZE	3
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   334
#define	XVA_MAGIC	0x78766174
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   335
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   336
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   337
 * vnodes
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   338
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   339
typedef struct vnode {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   340
	uint64_t	v_size;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   341
	int		v_fd;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   342
	char		*v_path;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   343
} vnode_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   344
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   345
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   346
typedef struct xoptattr {
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   347
	timestruc_t	xoa_createtime;	/* Create time of file */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   348
	uint8_t		xoa_archive;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   349
	uint8_t		xoa_system;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   350
	uint8_t		xoa_readonly;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   351
	uint8_t		xoa_hidden;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   352
	uint8_t		xoa_nounlink;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   353
	uint8_t		xoa_immutable;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   354
	uint8_t		xoa_appendonly;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   355
	uint8_t		xoa_nodump;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   356
	uint8_t		xoa_settable;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   357
	uint8_t		xoa_opaque;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   358
	uint8_t		xoa_av_quarantined;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   359
	uint8_t		xoa_av_modified;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   360
} xoptattr_t;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   361
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   362
typedef struct vattr {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   363
	uint_t		va_mask;	/* bit-mask of attributes */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   364
	u_offset_t	va_size;	/* file size in bytes */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   365
} vattr_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   366
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   367
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   368
typedef struct xvattr {
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   369
	vattr_t		xva_vattr;	/* Embedded vattr structure */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   370
	uint32_t	xva_magic;	/* Magic Number */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   371
	uint32_t	xva_mapsize;	/* Size of attr bitmap (32-bit words) */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   372
	uint32_t	*xva_rtnattrmapp;	/* Ptr to xva_rtnattrmap[] */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   373
	uint32_t	xva_reqattrmap[XVA_MAPSIZE];	/* Requested attrs */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   374
	uint32_t	xva_rtnattrmap[XVA_MAPSIZE];	/* Returned attrs */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   375
	xoptattr_t	xva_xoptattrs;	/* Optional attributes */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   376
} xvattr_t;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   377
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   378
typedef struct vsecattr {
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   379
	uint_t		vsa_mask;	/* See below */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   380
	int		vsa_aclcnt;	/* ACL entry count */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   381
	void		*vsa_aclentp;	/* pointer to ACL entries */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   382
	int		vsa_dfaclcnt;	/* default ACL entry count */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   383
	void		*vsa_dfaclentp;	/* pointer to default ACL entries */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   384
	size_t		vsa_aclentsz;	/* ACE size in bytes of vsa_aclentp */
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   385
} vsecattr_t;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   386
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   387
#define	AT_TYPE		0x00001
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   388
#define	AT_MODE		0x00002
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   389
#define	AT_UID		0x00004
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   390
#define	AT_GID		0x00008
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   391
#define	AT_FSID		0x00010
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   392
#define	AT_NODEID	0x00020
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   393
#define	AT_NLINK	0x00040
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   394
#define	AT_SIZE		0x00080
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   395
#define	AT_ATIME	0x00100
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   396
#define	AT_MTIME	0x00200
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   397
#define	AT_CTIME	0x00400
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   398
#define	AT_RDEV		0x00800
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   399
#define	AT_BLKSIZE	0x01000
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   400
#define	AT_NBLOCKS	0x02000
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   401
#define	AT_SEQ		0x08000
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   402
#define	AT_XVATTR	0x10000
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   403
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   404
#define	CRCREAT		0
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   405
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   406
#define	VOP_CLOSE(vp, f, c, o, cr, ct)	0
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   407
#define	VOP_PUTPAGE(vp, of, sz, fl, cr, ct)	0
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   408
#define	VOP_GETATTR(vp, vap, fl, cr, ct)  ((vap)->va_size = (vp)->v_size, 0)
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   409
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   410
#define	VOP_FSYNC(vp, f, cr, ct)	fsync((vp)->v_fd)
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   411
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   412
#define	VN_RELE(vp)	vn_close(vp)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   413
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   414
extern int vn_open(char *path, int x1, int oflags, int mode, vnode_t **vpp,
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   415
    int x2, int x3);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   416
extern int vn_openat(char *path, int x1, int oflags, int mode, vnode_t **vpp,
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   417
    int x2, int x3, vnode_t *vp, int fd);
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   418
extern int vn_rdwr(int uio, vnode_t *vp, void *addr, ssize_t len,
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   419
    offset_t offset, int x1, int x2, rlim64_t x3, void *x4, ssize_t *residp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   420
extern void vn_close(vnode_t *vp);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   421
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   422
#define	vn_remove(path, x1, x2)		remove(path)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   423
#define	vn_rename(from, to, seg)	rename((from), (to))
1635
0ab1193d47cb 6398664 zpool detach: missing argument to error message causes core dump
bonwick
parents: 1596
diff changeset
   424
#define	vn_is_readonly(vp)		B_FALSE
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   425
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   426
extern vnode_t *rootdir;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   427
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   428
#include <sys/file.h>		/* for FREAD, FWRITE, etc */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   429
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   430
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   431
 * Random stuff
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   432
 */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   433
#define	lbolt	(gethrtime() >> 23)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   434
#define	lbolt64	(gethrtime() >> 23)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   435
#define	hz	119	/* frequency when using gethrtime() >> 23 for lbolt */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   436
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   437
extern void delay(clock_t ticks);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   438
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   439
#define	gethrestime_sec() time(NULL)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   440
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   441
#define	max_ncpus	64
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   442
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   443
#define	minclsyspri	60
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   444
#define	maxclsyspri	99
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   445
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   446
#define	CPU_SEQID	(thr_self() & (max_ncpus - 1))
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   447
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   448
#define	kcred		NULL
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   449
#define	CRED()		NULL
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   450
7468
23915842aa09 6687412 zfs stuck issuing small txg
Mark Maybee <Mark.Maybee@Sun.COM>
parents: 6245
diff changeset
   451
#define	ptob(x)		((x) * PAGESIZE)
23915842aa09 6687412 zfs stuck issuing small txg
Mark Maybee <Mark.Maybee@Sun.COM>
parents: 6245
diff changeset
   452
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   453
extern uint64_t physmem;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   454
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   455
extern int highbit(ulong_t i);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   456
extern int random_get_bytes(uint8_t *ptr, size_t len);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   457
extern int random_get_pseudo_bytes(uint8_t *ptr, size_t len);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   458
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   459
extern void kernel_init(int);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   460
extern void kernel_fini(void);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   461
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   462
struct spa;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   463
extern void nicenum(uint64_t num, char *buf);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   464
extern void show_pool_stats(struct spa *);
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   465
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   466
typedef struct callb_cpr {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   467
	kmutex_t	*cc_lockp;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   468
} callb_cpr_t;
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   469
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   470
#define	CALLB_CPR_INIT(cp, lockp, func, name)	{		\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   471
	(cp)->cc_lockp = lockp;					\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   472
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   473
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   474
#define	CALLB_CPR_SAFE_BEGIN(cp) {				\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   475
	ASSERT(MUTEX_HELD((cp)->cc_lockp));			\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   476
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   477
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   478
#define	CALLB_CPR_SAFE_END(cp, lockp) {				\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   479
	ASSERT(MUTEX_HELD((cp)->cc_lockp));			\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   480
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   481
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   482
#define	CALLB_CPR_EXIT(cp) {					\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   483
	ASSERT(MUTEX_HELD((cp)->cc_lockp));			\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   484
	mutex_exit((cp)->cc_lockp);				\
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   485
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   486
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   487
#define	zone_dataset_visible(x, y)	(1)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   488
#define	INGLOBALZONE(z)			(1)
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   489
3975
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   490
/*
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   491
 * Hostname information
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   492
 */
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   493
extern char hw_serial[];
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   494
extern int ddi_strtoul(const char *str, char **nptr, int base,
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   495
    unsigned long *result);
6674f5d79069 6282725 hostname/hostid should be stored in the label
ek110237
parents: 3912
diff changeset
   496
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   497
/* ZFS Boot Related stuff. */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   498
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   499
struct _buf {
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   500
	intptr_t	_fd;
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   501
};
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   502
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   503
struct bootstat {
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   504
	uint64_t st_size;
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   505
};
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   506
5331
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   507
typedef struct ace_object {
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   508
	uid_t		a_who;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   509
	uint32_t	a_access_mask;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   510
	uint16_t	a_flags;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   511
	uint16_t	a_type;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   512
	uint8_t		a_obj_type[16];
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   513
	uint8_t		a_inherit_obj_type[16];
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   514
} ace_object_t;
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   515
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   516
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   517
#define	ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE	0x05
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   518
#define	ACE_ACCESS_DENIED_OBJECT_ACE_TYPE	0x06
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   519
#define	ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE	0x07
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   520
#define	ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE	0x08
3047ad28a67b PSARC/2007/218 caller_context_t in all VOPs
amw
parents: 5329
diff changeset
   521
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   522
extern struct _buf *kobj_open_file(char *name);
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   523
extern int kobj_read_file(struct _buf *file, char *buf, unsigned size,
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   524
    unsigned off);
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   525
extern void kobj_close_file(struct _buf *file);
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3713
diff changeset
   526
extern int kobj_get_filesize(struct _buf *file, uint64_t *size);
4543
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   527
extern int zfs_secpolicy_snapshot_perms(const char *name, cred_t *cr);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   528
extern int zfs_secpolicy_rename_perms(const char *from, const char *to,
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   529
    cred_t *cr);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   530
extern int zfs_secpolicy_destroy_perms(const char *name, cred_t *cr);
12bb2876a62e PSARC/2006/465 ZFS Delegated Administration
marks
parents: 4451
diff changeset
   531
extern zoneid_t getzoneid(void);
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 849
diff changeset
   532
5959
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   533
/* SID stuff */
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   534
typedef struct ksiddomain {
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   535
	uint_t	kd_ref;
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   536
	uint_t	kd_len;
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   537
	char	*kd_name;
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   538
} ksiddomain_t;
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   539
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   540
ksiddomain_t *ksid_lookupdomain(const char *);
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   541
void ksiddomain_rele(ksiddomain_t *);
1e1904b8526d 6650192 zfs ACL/fuid code could use some minor cleanup
marks
parents: 5498
diff changeset
   542
4108
f12bcec19e0e 6550175 zfs_context.h needs a clean up
lling
parents: 3975
diff changeset
   543
#ifdef	__cplusplus
f12bcec19e0e 6550175 zfs_context.h needs a clean up
lling
parents: 3975
diff changeset
   544
}
f12bcec19e0e 6550175 zfs_context.h needs a clean up
lling
parents: 3975
diff changeset
   545
#endif
f12bcec19e0e 6550175 zfs_context.h needs a clean up
lling
parents: 3975
diff changeset
   546
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   547
#endif	/* _SYS_ZFS_CONTEXT_H */