117 bplist_t spa_sync_bplist; /* deferred-free bplist */ |
117 bplist_t spa_sync_bplist; /* deferred-free bplist */ |
118 krwlock_t spa_traverse_lock; /* traverse vs. spa_sync() */ |
118 krwlock_t spa_traverse_lock; /* traverse vs. spa_sync() */ |
119 uberblock_t spa_ubsync; /* last synced uberblock */ |
119 uberblock_t spa_ubsync; /* last synced uberblock */ |
120 uberblock_t spa_uberblock; /* current uberblock */ |
120 uberblock_t spa_uberblock; /* current uberblock */ |
121 kmutex_t spa_scrub_lock; /* resilver/scrub lock */ |
121 kmutex_t spa_scrub_lock; /* resilver/scrub lock */ |
122 kthread_t *spa_scrub_thread; /* scrub/resilver thread */ |
|
123 traverse_handle_t *spa_scrub_th; /* scrub traverse handle */ |
|
124 uint64_t spa_scrub_restart_txg; /* need to restart */ |
|
125 uint64_t spa_scrub_mintxg; /* min txg we'll scrub */ |
|
126 uint64_t spa_scrub_maxtxg; /* max txg we'll scrub */ |
|
127 uint64_t spa_scrub_inflight; /* in-flight scrub I/Os */ |
122 uint64_t spa_scrub_inflight; /* in-flight scrub I/Os */ |
128 uint64_t spa_scrub_maxinflight; /* max in-flight scrub I/Os */ |
123 uint64_t spa_scrub_maxinflight; /* max in-flight scrub I/Os */ |
129 uint64_t spa_scrub_errors; /* scrub I/O error count */ |
124 uint64_t spa_scrub_errors; /* scrub I/O error count */ |
130 int spa_scrub_suspended; /* tell scrubber to suspend */ |
|
131 kcondvar_t spa_scrub_cv; /* scrub thread state change */ |
|
132 kcondvar_t spa_scrub_io_cv; /* scrub I/O completion */ |
125 kcondvar_t spa_scrub_io_cv; /* scrub I/O completion */ |
133 uint8_t spa_scrub_stop; /* tell scrubber to stop */ |
|
134 uint8_t spa_scrub_active; /* active or suspended? */ |
126 uint8_t spa_scrub_active; /* active or suspended? */ |
135 uint8_t spa_scrub_type; /* type of scrub we're doing */ |
127 uint8_t spa_scrub_type; /* type of scrub we're doing */ |
136 uint8_t spa_scrub_finished; /* indicator to rotate logs */ |
128 uint8_t spa_scrub_finished; /* indicator to rotate logs */ |
|
129 uint8_t spa_scrub_started; /* started since last boot */ |
|
130 uint8_t spa_scrub_reopen; /* scrub doing vdev_reopen */ |
137 kmutex_t spa_async_lock; /* protect async state */ |
131 kmutex_t spa_async_lock; /* protect async state */ |
138 kthread_t *spa_async_thread; /* thread doing async task */ |
132 kthread_t *spa_async_thread; /* thread doing async task */ |
139 int spa_async_suspended; /* async tasks suspended */ |
133 int spa_async_suspended; /* async tasks suspended */ |
140 kcondvar_t spa_async_cv; /* wait for thread_exit() */ |
134 kcondvar_t spa_async_cv; /* wait for thread_exit() */ |
141 uint16_t spa_async_tasks; /* async task mask */ |
135 uint16_t spa_async_tasks; /* async task mask */ |
162 kcondvar_t spa_zio_cv; /* resume I/O pipeline */ |
156 kcondvar_t spa_zio_cv; /* resume I/O pipeline */ |
163 kmutex_t spa_zio_lock; /* zio error lock */ |
157 kmutex_t spa_zio_lock; /* zio error lock */ |
164 uint8_t spa_failmode; /* failure mode for the pool */ |
158 uint8_t spa_failmode; /* failure mode for the pool */ |
165 boolean_t spa_import_faulted; /* allow faulted vdevs */ |
159 boolean_t spa_import_faulted; /* allow faulted vdevs */ |
166 boolean_t spa_is_root; /* pool is root */ |
160 boolean_t spa_is_root; /* pool is root */ |
|
161 int spa_minref; /* num refs when first opened */ |
167 /* |
162 /* |
168 * spa_refcnt & spa_config_lock must be the last elements |
163 * spa_refcnt & spa_config_lock must be the last elements |
169 * because refcount_t changes size based on compilation options. |
164 * because refcount_t changes size based on compilation options. |
170 * In order for the MDB module to function correctly, the other |
165 * In order for the MDB module to function correctly, the other |
171 * fields must remain in the same location. |
166 * fields must remain in the same location. |