usr/src/uts/common/fs/zfs/sys/spa_impl.h
author Christopher Siden <chris.siden@delphix.com>
Mon, 21 May 2012 12:11:39 -0700
changeset 13700 2889e2596bd6
parent 13525 7059b67f1bc2
child 13777 b1e53580146d
permissions -rw-r--r--
2619 asynchronous destruction of ZFS file systems 2747 SPA versioning with zfs feature flags Reviewed by: Matt Ahrens <[email protected]> Reviewed by: George Wilson <[email protected]> Reviewed by: Richard Lowe <[email protected]> Reviewed by: Dan Kruchinin <[email protected]> Approved by: Eric Schrock <[email protected]>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     1
/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     2
 * CDDL HEADER START
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     3
 *
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
     5
 * Common Development and Distribution License (the "License").
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
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
/*
12296
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11727
diff changeset
    22
 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13525
diff changeset
    23
 * Copyright (c) 2012 by Delphix. All rights reserved.
13514
417c34452f03 1748 desire support for reguid in zfs
Garrett D'Amore <garrett@nexenta.com>
parents: 13379
diff changeset
    24
 * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
789
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 _SYS_SPA_IMPL_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    28
#define	_SYS_SPA_IMPL_H
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    29
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    30
#include <sys/spa.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    31
#include <sys/vdev.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    32
#include <sys/metaslab.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    33
#include <sys/dmu.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    34
#include <sys/dsl_pool.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    35
#include <sys/uberblock_impl.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    36
#include <sys/zfs_context.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    37
#include <sys/avl.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    38
#include <sys/refcount.h>
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    39
#include <sys/bplist.h>
12470
54258108784b 6948890 snapshot deletion can induce pathologically long spa_sync() times
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 12296
diff changeset
    40
#include <sys/bpobj.h>
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    41
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    42
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    43
extern "C" {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    44
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
    45
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
    46
typedef struct spa_error_entry {
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
    47
	zbookmark_t	se_bookmark;
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
    48
	char		*se_name;
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
    49
	avl_node_t	se_avl;
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
    50
} spa_error_entry_t;
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
    51
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
    52
typedef struct spa_history_phys {
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
    53
	uint64_t sh_pool_create_len;	/* ending offset of zpool create */
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
    54
	uint64_t sh_phys_max_off;	/* physical EOF */
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
    55
	uint64_t sh_bof;		/* logical BOF */
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
    56
	uint64_t sh_eof;		/* logical EOF */
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
    57
	uint64_t sh_records_lost;	/* num of records overwritten */
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
    58
} spa_history_phys_t;
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
    59
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    60
struct spa_aux_vdev {
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    61
	uint64_t	sav_object;		/* MOS object for device list */
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    62
	nvlist_t	*sav_config;		/* cached device config */
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    63
	vdev_t		**sav_vdevs;		/* devices */
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    64
	int		sav_count;		/* number devices */
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    65
	boolean_t	sav_sync;		/* sync the device list */
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    66
	nvlist_t	**sav_pending;		/* pending device additions */
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    67
	uint_t		sav_npending;		/* # pending devices */
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    68
};
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
    69
5530
4ed96167d864 6354519 stack overflow in zfs due to zio pipeline
bonwick
parents: 5450
diff changeset
    70
typedef struct spa_config_lock {
4ed96167d864 6354519 stack overflow in zfs due to zio pipeline
bonwick
parents: 5450
diff changeset
    71
	kmutex_t	scl_lock;
4ed96167d864 6354519 stack overflow in zfs due to zio pipeline
bonwick
parents: 5450
diff changeset
    72
	kthread_t	*scl_writer;
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
    73
	int		scl_write_wanted;
5530
4ed96167d864 6354519 stack overflow in zfs due to zio pipeline
bonwick
parents: 5450
diff changeset
    74
	kcondvar_t	scl_cv;
4ed96167d864 6354519 stack overflow in zfs due to zio pipeline
bonwick
parents: 5450
diff changeset
    75
	refcount_t	scl_count;
4ed96167d864 6354519 stack overflow in zfs due to zio pipeline
bonwick
parents: 5450
diff changeset
    76
} spa_config_lock_t;
4ed96167d864 6354519 stack overflow in zfs due to zio pipeline
bonwick
parents: 5450
diff changeset
    77
6643
3a34b0dbb107 6625086 changing cachefile doesn't remove old cache on last user
eschrock
parents: 5530
diff changeset
    78
typedef struct spa_config_dirent {
3a34b0dbb107 6625086 changing cachefile doesn't remove old cache on last user
eschrock
parents: 5530
diff changeset
    79
	list_node_t	scd_link;
3a34b0dbb107 6625086 changing cachefile doesn't remove old cache on last user
eschrock
parents: 5530
diff changeset
    80
	char		*scd_path;
3a34b0dbb107 6625086 changing cachefile doesn't remove old cache on last user
eschrock
parents: 5530
diff changeset
    81
} spa_config_dirent_t;
3a34b0dbb107 6625086 changing cachefile doesn't remove old cache on last user
eschrock
parents: 5530
diff changeset
    82
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
    83
enum zio_taskq_type {
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
    84
	ZIO_TASKQ_ISSUE = 0,
11146
7e58f40bcb1c 6826241 Sync write IOPS drops dramatically during TXG sync
George Wilson <George.Wilson@Sun.COM>
parents: 10974
diff changeset
    85
	ZIO_TASKQ_ISSUE_HIGH,
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
    86
	ZIO_TASKQ_INTERRUPT,
11146
7e58f40bcb1c 6826241 Sync write IOPS drops dramatically during TXG sync
George Wilson <George.Wilson@Sun.COM>
parents: 10974
diff changeset
    87
	ZIO_TASKQ_INTERRUPT_HIGH,
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
    88
	ZIO_TASKQ_TYPES
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
    89
};
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
    90
11173
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    91
/*
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    92
 * State machine for the zpool-pooname process.  The states transitions
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    93
 * are done as follows:
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    94
 *
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    95
 *	From		   To			Routine
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    96
 *	PROC_NONE	-> PROC_CREATED		spa_activate()
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    97
 *	PROC_CREATED	-> PROC_ACTIVE		spa_thread()
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    98
 *	PROC_ACTIVE	-> PROC_DEACTIVATE	spa_deactivate()
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
    99
 *	PROC_DEACTIVATE	-> PROC_GONE		spa_thread()
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   100
 *	PROC_GONE	-> PROC_NONE		spa_deactivate()
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   101
 */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   102
typedef enum spa_proc_state {
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   103
	SPA_PROC_NONE,		/* spa_proc = &p0, no process created */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   104
	SPA_PROC_CREATED,	/* spa_activate() has proc, is waiting */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   105
	SPA_PROC_ACTIVE,	/* taskqs created, spa_proc set */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   106
	SPA_PROC_DEACTIVATE,	/* spa_deactivate() requests process exit */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   107
	SPA_PROC_GONE		/* spa_thread() is exiting, spa_proc = &p0 */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   108
} spa_proc_state_t;
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   109
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   110
struct spa {
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   111
	/*
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   112
	 * Fields protected by spa_namespace_lock.
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   113
	 */
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   114
	char		spa_name[MAXNAMELEN];	/* pool name */
13525
7059b67f1bc2 1693 persistent 'comment' field for a zpool
Dan McDonald <danmcd@nexenta.com>
parents: 13514
diff changeset
   115
	char		*spa_comment;		/* comment */
1635
0ab1193d47cb 6398664 zpool detach: missing argument to error message causes core dump
bonwick
parents: 1544
diff changeset
   116
	avl_node_t	spa_avl;		/* node in spa_namespace_avl */
0ab1193d47cb 6398664 zpool detach: missing argument to error message causes core dump
bonwick
parents: 1544
diff changeset
   117
	nvlist_t	*spa_config;		/* last synced config */
0ab1193d47cb 6398664 zpool detach: missing argument to error message causes core dump
bonwick
parents: 1544
diff changeset
   118
	nvlist_t	*spa_config_syncing;	/* currently syncing config */
11422
42768837421d PSARC/2009/511 zpool split
Mark J Musante <Mark.Musante@Sun.COM>
parents: 11173
diff changeset
   119
	nvlist_t	*spa_config_splitting;	/* config for splitting */
12961
b521d551715f 6733267 Allow a pool to be imported with a missing slog
George Wilson <George.Wilson@Sun.COM>
parents: 12829
diff changeset
   120
	nvlist_t	*spa_load_info;		/* info and errors from load */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   121
	uint64_t	spa_config_txg;		/* txg of last config change */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   122
	int		spa_sync_pass;		/* iterate-to-convergence */
7837
001de5627df3 6333409 traversal code should be able to issue multiple reads in parallel
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 7754
diff changeset
   123
	pool_state_t	spa_state;		/* pool state */
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   124
	int		spa_inject_ref;		/* injection references */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   125
	uint8_t		spa_sync_on;		/* sync threads are running */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   126
	spa_load_state_t spa_load_state;	/* current load operation */
12961
b521d551715f 6733267 Allow a pool to be imported with a missing slog
George Wilson <George.Wilson@Sun.COM>
parents: 12829
diff changeset
   127
	uint64_t	spa_import_flags;	/* import specific flags */
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   128
	taskq_t		*spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES];
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   129
	dsl_pool_t	*spa_dsl_pool;
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13525
diff changeset
   130
	boolean_t	spa_is_initializing;	/* true while opening pool */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   131
	metaslab_class_t *spa_normal_class;	/* normal data class */
4527
5d5b6ba91b17 PSARC 2007/171 ZFS Separate Intent Log
perrin
parents: 3912
diff changeset
   132
	metaslab_class_t *spa_log_class;	/* intent log data class */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   133
	uint64_t	spa_first_txg;		/* first txg after spa_open() */
1635
0ab1193d47cb 6398664 zpool detach: missing argument to error message causes core dump
bonwick
parents: 1544
diff changeset
   134
	uint64_t	spa_final_txg;		/* txg of export/destroy */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   135
	uint64_t	spa_freeze_txg;		/* freeze pool at this txg */
10921
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   136
	uint64_t	spa_load_max_txg;	/* best initial ub_txg */
10922
e2081f502306 PSARC 2009/571 ZFS Deduplication Properties
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 10921
diff changeset
   137
	uint64_t	spa_claim_max_txg;	/* highest claimed birth txg */
12829
0336e913b141 6937608 ZFS DE should ignore ereports prior to pool import
Tim Haley <Tim.Haley@Sun.COM>
parents: 12586
diff changeset
   138
	timespec_t	spa_loaded_ts;		/* 1st successful open time */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   139
	objset_t	*spa_meta_objset;	/* copy of dp->dp_meta_objset */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   140
	txg_list_t	spa_vdev_txg_list;	/* per-txg dirty vdev list */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   141
	vdev_t		*spa_root_vdev;		/* top-level vdev container */
13514
417c34452f03 1748 desire support for reguid in zfs
Garrett D'Amore <garrett@nexenta.com>
parents: 13379
diff changeset
   142
	uint64_t	spa_config_guid;	/* config pool guid */
417c34452f03 1748 desire support for reguid in zfs
Garrett D'Amore <garrett@nexenta.com>
parents: 13379
diff changeset
   143
	uint64_t	spa_load_guid;		/* spa_load initialized guid */
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   144
	list_t		spa_config_dirty_list;	/* vdevs with dirty config */
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   145
	list_t		spa_state_dirty_list;	/* vdevs with dirty state */
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
   146
	spa_aux_vdev_t	spa_spares;		/* hot spares */
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5363
diff changeset
   147
	spa_aux_vdev_t	spa_l2cache;		/* L2ARC cache devices */
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13525
diff changeset
   148
	nvlist_t	*spa_label_features;	/* Features for reading MOS */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   149
	uint64_t	spa_config_object;	/* MOS object for pool config */
10685
931790026ac6 6846163 ZFS continues to use faulted logzilla, bringing system to a crawl
George Wilson <George.Wilson@Sun.COM>
parents: 10672
diff changeset
   150
	uint64_t	spa_config_generation;	/* config generation number */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   151
	uint64_t	spa_syncing_txg;	/* txg currently syncing */
12470
54258108784b 6948890 snapshot deletion can induce pathologically long spa_sync() times
Matthew Ahrens <Matthew.Ahrens@Sun.COM>
parents: 12296
diff changeset
   152
	bpobj_t		spa_deferred_bpobj;	/* deferred-free bplist */
10922
e2081f502306 PSARC 2009/571 ZFS Deduplication Properties
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 10921
diff changeset
   153
	bplist_t	spa_free_bplist[TXG_SIZE]; /* bplist of stuff to free */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   154
	uberblock_t	spa_ubsync;		/* last synced uberblock */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   155
	uberblock_t	spa_uberblock;		/* current uberblock */
10921
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   156
	boolean_t	spa_extreme_rewind;	/* rewind past deferred frees */
12586
b118bbd65be9 6494473 ZFS needs a way to slow down resilvering
George Wilson <George.Wilson@Sun.COM>
parents: 12470
diff changeset
   157
	uint64_t	spa_last_io;		/* lbolt of last non-scan I/O */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   158
	kmutex_t	spa_scrub_lock;		/* resilver/scrub lock */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   159
	uint64_t	spa_scrub_inflight;	/* in-flight scrub I/Os */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   160
	kcondvar_t	spa_scrub_io_cv;	/* scrub I/O completion */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   161
	uint8_t		spa_scrub_active;	/* active or suspended? */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   162
	uint8_t		spa_scrub_type;		/* type of scrub we're doing */
1635
0ab1193d47cb 6398664 zpool detach: missing argument to error message causes core dump
bonwick
parents: 1544
diff changeset
   163
	uint8_t		spa_scrub_finished;	/* indicator to rotate logs */
7046
361307ae060d 6343667 scrub/resilver has to start over when a snapshot is taken
ahrens
parents: 7042
diff changeset
   164
	uint8_t		spa_scrub_started;	/* started since last boot */
361307ae060d 6343667 scrub/resilver has to start over when a snapshot is taken
ahrens
parents: 7042
diff changeset
   165
	uint8_t		spa_scrub_reopen;	/* scrub doing vdev_reopen */
12296
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11727
diff changeset
   166
	uint64_t	spa_scan_pass_start;	/* start time per pass/reboot */
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11727
diff changeset
   167
	uint64_t	spa_scan_pass_exam;	/* examined bytes per pass */
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   168
	kmutex_t	spa_async_lock;		/* protect async state */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   169
	kthread_t	*spa_async_thread;	/* thread doing async task */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   170
	int		spa_async_suspended;	/* async tasks suspended */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   171
	kcondvar_t	spa_async_cv;		/* wait for thread_exit() */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   172
	uint16_t	spa_async_tasks;	/* async task mask */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   173
	char		*spa_root;		/* alternate root directory */
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   174
	uint64_t	spa_ena;		/* spa-wide ereport ENA */
10921
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   175
	int		spa_last_open_failed;	/* error if last open failed */
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   176
	uint64_t	spa_last_ubsync_txg;	/* "best" uberblock txg */
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   177
	uint64_t	spa_last_ubsync_txg_ts;	/* timestamp from that ub */
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   178
	uint64_t	spa_load_txg;		/* ub txg that loaded */
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   179
	uint64_t	spa_load_txg_ts;	/* timestamp from that ub */
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   180
	uint64_t	spa_load_meta_errors;	/* verify metadata err count */
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   181
	uint64_t	spa_load_data_errors;	/* verify data err count */
8aac17999e4d PSARC 2009/479 zpool recovery support
Tim Haley <Tim.Haley@Sun.COM>
parents: 10685
diff changeset
   182
	uint64_t	spa_verify_min_txg;	/* start txg of verify scrub */
1544
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   183
	kmutex_t	spa_errlog_lock;	/* error log lock */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   184
	uint64_t	spa_errlog_last;	/* last error log object */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   185
	uint64_t	spa_errlog_scrub;	/* scrub error log object */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   186
	kmutex_t	spa_errlist_lock;	/* error list/ereport lock */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   187
	avl_tree_t	spa_errlist_last;	/* last error list */
938876158511 PSARC 2006/077 zpool clear
eschrock
parents: 789
diff changeset
   188
	avl_tree_t	spa_errlist_scrub;	/* scrub error list */
2082
76b439ec3ac1 PSARC 2006/223 ZFS Hot Spares
eschrock
parents: 1635
diff changeset
   189
	uint64_t	spa_deflate;		/* should we deflate? */
2926
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
   190
	uint64_t	spa_history;		/* history object */
acfcfefbc60d PSARC 2006/288 zpool history
ek110237
parents: 2174
diff changeset
   191
	kmutex_t	spa_history_lock;	/* history lock */
3377
a2fa338530c1 6393525 vdev_reopen() should verify that it's still the same device
eschrock
parents: 2926
diff changeset
   192
	vdev_t		*spa_pending_vdev;	/* pending vdev additions */
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3697
diff changeset
   193
	kmutex_t	spa_props_lock;		/* property lock */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3697
diff changeset
   194
	uint64_t	spa_pool_props_object;	/* object for properties */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 3697
diff changeset
   195
	uint64_t	spa_bootfs;		/* default boot filesystem */
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   196
	uint64_t	spa_failmode;		/* failure mode for the pool */
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   197
	uint64_t	spa_delegation;		/* delegation on/off */
6643
3a34b0dbb107 6625086 changing cachefile doesn't remove old cache on last user
eschrock
parents: 5530
diff changeset
   198
	list_t		spa_config_list;	/* previous cache file(s) */
9234
bffdc4fc05c4 6792139 recovering from a suspended pool needs some work
George Wilson <George.Wilson@Sun.COM>
parents: 8241
diff changeset
   199
	zio_t		*spa_async_zio_root;	/* root of all async I/O */
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   200
	zio_t		*spa_suspend_zio_root;	/* root of all suspended I/O */
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   201
	kmutex_t	spa_suspend_lock;	/* protects suspend_zio_root */
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   202
	kcondvar_t	spa_suspend_cv;		/* notification of resume */
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   203
	uint8_t		spa_suspended;		/* pool is suspended */
10922
e2081f502306 PSARC 2009/571 ZFS Deduplication Properties
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 10921
diff changeset
   204
	uint8_t		spa_claiming;		/* pool is doing zil_claim() */
13379
4df42cc92254 1051 zfs should handle imbalanced luns
George Wilson <George.Wilson@delphix.com>
parents: 12961
diff changeset
   205
	boolean_t	spa_debug;		/* debug enabled? */
6673
be079d6124af 6697301 deadlock between ZFS and devfs can hang system
eschrock
parents: 6643
diff changeset
   206
	boolean_t	spa_is_root;		/* pool is root */
7046
361307ae060d 6343667 scrub/resilver has to start over when a snapshot is taken
ahrens
parents: 7042
diff changeset
   207
	int		spa_minref;		/* num refs when first opened */
8241
5a60f16123ba 6328632 zpool offline is a bit too conservative
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7837
diff changeset
   208
	int		spa_mode;		/* FREAD | FWRITE */
7294
c9c31ef4c960 PSARC 2008/486 Intent log replay failure handling
perrin
parents: 7046
diff changeset
   209
	spa_log_state_t spa_log_state;		/* log state */
9816
847676ec1c5b PSARC 2008/353 zpool autoexpand property
George Wilson <George.Wilson@Sun.COM>
parents: 9425
diff changeset
   210
	uint64_t	spa_autoexpand;		/* lun expansion on/off */
10922
e2081f502306 PSARC 2009/571 ZFS Deduplication Properties
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 10921
diff changeset
   211
	ddt_t		*spa_ddt[ZIO_CHECKSUM_FUNCTIONS]; /* in-core DDTs */
e2081f502306 PSARC 2009/571 ZFS Deduplication Properties
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 10921
diff changeset
   212
	uint64_t	spa_ddt_stat_object;	/* DDT statistics */
e2081f502306 PSARC 2009/571 ZFS Deduplication Properties
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 10921
diff changeset
   213
	uint64_t	spa_dedup_ditto;	/* dedup ditto threshold */
e2081f502306 PSARC 2009/571 ZFS Deduplication Properties
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 10921
diff changeset
   214
	uint64_t	spa_dedup_checksum;	/* default dedup checksum */
10956
0c81acaaf614 6897693 deduplication can only go so far
George Wilson <George.Wilson@Sun.COM>
parents: 10922
diff changeset
   215
	uint64_t	spa_dspace;		/* dspace in normal class */
10974
32d689ba6466 6897958 ASSERT in metaslab_class_space_update() with 8+ exabyte pool
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 10956
diff changeset
   216
	kmutex_t	spa_vdev_top_lock;	/* dueling offline/remove */
11173
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   217
	kmutex_t	spa_proc_lock;		/* protects spa_proc* */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   218
	kcondvar_t	spa_proc_cv;		/* spa_proc_state transitions */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   219
	spa_proc_state_t spa_proc_state;	/* see definition */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   220
	struct proc	*spa_proc;		/* "zpool-poolname" process */
87f3734e64df 6881015 ZFS write activity prevents other threads from running in a timely manner
Jonathan Adams <Jonathan.Adams@Sun.COM>
parents: 11146
diff changeset
   221
	uint64_t	spa_did;		/* if procp != p0, did of t1 */
10672
cee5a0f557db 6836743 zfs_ioc_pool_set_props() leaks nvlist if configfile is only property
Eric Schrock <Eric.Schrock@Sun.COM>
parents: 10100
diff changeset
   222
	boolean_t	spa_autoreplace;	/* autoreplace set in open */
10685
931790026ac6 6846163 ZFS continues to use faulted logzilla, bringing system to a crawl
George Wilson <George.Wilson@Sun.COM>
parents: 10672
diff changeset
   223
	int		spa_vdev_locks;		/* locks grabbed */
12296
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11727
diff changeset
   224
	uint64_t	spa_creation_version;	/* version at pool creation */
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13525
diff changeset
   225
	uint64_t	spa_prev_software_version; /* See ub_software_version */
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13525
diff changeset
   226
	uint64_t	spa_feat_for_write_obj;	/* required to write to pool */
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13525
diff changeset
   227
	uint64_t	spa_feat_for_read_obj;	/* required to read from pool */
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13525
diff changeset
   228
	uint64_t	spa_feat_desc_obj;	/* Feature descriptions */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   229
	/*
4787
602d3f97842c 6393351 unique_* could be improved
ahrens
parents: 4543
diff changeset
   230
	 * spa_refcnt & spa_config_lock must be the last elements
602d3f97842c 6393351 unique_* could be improved
ahrens
parents: 4543
diff changeset
   231
	 * because refcount_t changes size based on compilation options.
602d3f97842c 6393351 unique_* could be improved
ahrens
parents: 4543
diff changeset
   232
	 * In order for the MDB module to function correctly, the other
602d3f97842c 6393351 unique_* could be improved
ahrens
parents: 4543
diff changeset
   233
	 * fields must remain in the same location.
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   234
	 */
7754
b80e4842ad54 6754011 SPA 3.0: lock breakup, i/o pipeline refactoring, device failure handling
Jeff Bonwick <Jeff.Bonwick@Sun.COM>
parents: 7294
diff changeset
   235
	spa_config_lock_t spa_config_lock[SCL_LOCKS]; /* config changes */
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   236
	refcount_t	spa_refcount;		/* number of opens */
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   237
};
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   238
6643
3a34b0dbb107 6625086 changing cachefile doesn't remove old cache on last user
eschrock
parents: 5530
diff changeset
   239
extern const char *spa_config_path;
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   240
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   241
#ifdef	__cplusplus
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   242
}
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   243
#endif
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   244
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents:
diff changeset
   245
#endif	/* _SYS_SPA_IMPL_H */