Lines Matching defs:spa
27 #include <sys/spa.h>
193 mmp_init(spa_t *spa)
195 mmp_thread_t *mmp = &spa->spa_mmp;
204 mmp_fini(spa_t *spa)
206 mmp_thread_t *mmp = &spa->spa_mmp;
230 mmp_thread_start(spa_t *spa)
232 mmp_thread_t *mmp = &spa->spa_mmp;
234 if (spa_writeable(spa)) {
238 spa, 0, &p0, TS_RUN, defclsyspri);
240 "gethrtime %llu", spa_name(spa), gethrtime());
247 mmp_thread_stop(spa_t *spa)
249 mmp_thread_t *mmp = &spa->spa_mmp;
260 spa_name(spa), gethrtime());
283 mmp_next_leaf(spa_t *spa)
289 ASSERT(MUTEX_HELD(&spa->spa_mmp.mmp_io_lock));
290 ASSERT(spa_config_held(spa, SCL_STATE, RW_READER));
291 ASSERT(list_link_active(&spa->spa_leaf_list.list_head) == B_TRUE);
292 ASSERT(!list_is_empty(&spa->spa_leaf_list));
294 if (spa->spa_mmp.mmp_leaf_last_gen != spa->spa_leaf_list_gen) {
295 spa->spa_mmp.mmp_last_leaf = list_head(&spa->spa_leaf_list);
296 spa->spa_mmp.mmp_leaf_last_gen = spa->spa_leaf_list_gen;
299 leaf = spa->spa_mmp.mmp_last_leaf;
301 leaf = list_head(&spa->spa_leaf_list);
305 leaf = list_next(&spa->spa_leaf_list, leaf);
307 leaf = list_head(&spa->spa_leaf_list);
325 spa->spa_mmp.mmp_last_leaf = leaf;
357 mmp_delay_update(spa_t *spa, boolean_t write_completed)
359 mmp_thread_t *mts = &spa->spa_mmp;
364 if (spa_multihost(spa) == B_FALSE) {
383 MAX(1, vdev_count_leaves(spa));
392 spa_t *spa = zio->io_spa;
400 mmp_delay_update(spa, (zio->io_error == 0));
406 spa_config_exit(spa, SCL_STATE, mmp_tag);
408 spa_mmp_history_set(spa, mmp_kstat_id, zio->io_error,
420 mmp_update_uberblock(spa_t *spa, uberblock_t *ub)
422 mmp_thread_t *mmp = &spa->spa_mmp;
428 mmp_delay_update(spa, B_TRUE);
438 mmp_write_uberblock(spa_t *spa)
441 mmp_thread_t *mmp = &spa->spa_mmp;
448 spa_config_enter_mmp(spa, SCL_STATE, mmp_tag, RW_READER);
452 "gethrtime %llu", spa_name(spa), lock_acquire_time,
457 error = mmp_next_leaf(spa);
468 mmp_delay_update(spa, B_FALSE);
470 spa_mmp_history_set_skip(spa, mmp->mmp_kstat_id - 1);
473 spa_mmp_history_add(spa, mmp->mmp_ub.ub_txg,
477 "gethrtime %llu fail_mask %#x", spa_name(spa),
481 spa_config_exit(spa, SCL_STATE, mmp_tag);
485 vd = spa->spa_mmp.mmp_last_leaf;
490 spa_name(spa), (u_longlong_t)gethrtime(),
495 mmp->mmp_zio_root = zio_root(spa, NULL, NULL,
518 zio_t *zio = zio_null(mmp->mmp_zio_root, spa, NULL, NULL, NULL, flags);
536 (void) spa_mmp_history_add(spa, ub->ub_txg, ub->ub_timestamp,
545 spa_t *spa = (spa_t *)arg;
546 mmp_thread_t *mmp = &spa->spa_mmp;
547 boolean_t suspended = spa_suspended(spa);
548 boolean_t multihost = spa_multihost(spa);
579 int leaves = MAX(vdev_count_leaves(spa), 1);
585 suspended = spa_suspended(spa);
586 multihost = spa_multihost(spa);
623 spa_name(spa), (u_longlong_t)gethrtime(),
640 spa_name(spa), (u_longlong_t)gethrtime(),
668 spa_name(spa), (u_longlong_t)gethrtime(),
673 (u_longlong_t)spa->spa_uberblock.ub_txg);
677 spa_name(spa),
680 zio_suspend(spa, NULL, ZIO_SUSPEND_MMP);
684 mmp_write_uberblock(spa);
716 mmp_signal_thread(spa_t *spa)
718 mmp_thread_t *mmp = &spa->spa_mmp;
729 spa_t *spa = NULL;
732 while ((spa = spa_next(spa))) {
733 if (spa->spa_state == POOL_STATE_ACTIVE)
734 mmp_signal_thread(spa);