Lines Matching refs:spa

194 mmp_init(spa_t *spa)  in mmp_init()  argument
196 mmp_thread_t *mmp = &spa->spa_mmp; in mmp_init()
213 mmp_fini(spa_t *spa) in mmp_fini() argument
215 mmp_thread_t *mmp = &spa->spa_mmp; in mmp_fini()
240 mmp_thread_start(spa_t *spa) in mmp_thread_start() argument
242 mmp_thread_t *mmp = &spa->spa_mmp; in mmp_thread_start()
244 if (spa_writeable(spa)) { in mmp_thread_start()
248 spa, 0, &p0, TS_RUN, minclsyspri); in mmp_thread_start()
250 "gethrtime %llu", spa_name(spa), gethrtime()); in mmp_thread_start()
257 mmp_thread_stop(spa_t *spa) in mmp_thread_stop() argument
259 mmp_thread_t *mmp = &spa->spa_mmp; in mmp_thread_stop()
270 spa_name(spa), gethrtime()); in mmp_thread_stop()
293 mmp_next_leaf(spa_t *spa) in mmp_next_leaf() argument
299 ASSERT(MUTEX_HELD(&spa->spa_mmp.mmp_io_lock)); in mmp_next_leaf()
300 ASSERT(spa_config_held(spa, SCL_STATE, RW_READER)); in mmp_next_leaf()
301 ASSERT(list_link_active(&spa->spa_leaf_list.list_head) == B_TRUE); in mmp_next_leaf()
302 ASSERT(!list_is_empty(&spa->spa_leaf_list)); in mmp_next_leaf()
304 if (spa->spa_mmp.mmp_leaf_last_gen != spa->spa_leaf_list_gen) { in mmp_next_leaf()
305 spa->spa_mmp.mmp_last_leaf = list_head(&spa->spa_leaf_list); in mmp_next_leaf()
306 spa->spa_mmp.mmp_leaf_last_gen = spa->spa_leaf_list_gen; in mmp_next_leaf()
309 leaf = spa->spa_mmp.mmp_last_leaf; in mmp_next_leaf()
311 leaf = list_head(&spa->spa_leaf_list); in mmp_next_leaf()
315 leaf = list_next(&spa->spa_leaf_list, leaf); in mmp_next_leaf()
317 leaf = list_head(&spa->spa_leaf_list); in mmp_next_leaf()
324 spa->spa_mmp.mmp_last_leaf = leaf; in mmp_next_leaf()
356 mmp_delay_update(spa_t *spa, boolean_t write_completed) in mmp_delay_update() argument
358 mmp_thread_t *mts = &spa->spa_mmp; in mmp_delay_update()
363 if (spa_multihost(spa) == B_FALSE) { in mmp_delay_update()
382 MAX(1, vdev_count_leaves(spa)); in mmp_delay_update()
391 spa_t *spa = zio->io_spa; in mmp_write_done() local
399 mmp_delay_update(spa, (zio->io_error == 0)); in mmp_write_done()
405 spa_config_exit(spa, SCL_STATE, mmp_tag); in mmp_write_done()
416 mmp_update_uberblock(spa_t *spa, uberblock_t *ub) in mmp_update_uberblock() argument
418 mmp_thread_t *mmp = &spa->spa_mmp; in mmp_update_uberblock()
424 mmp_delay_update(spa, B_TRUE); in mmp_update_uberblock()
434 mmp_write_uberblock(spa_t *spa) in mmp_write_uberblock() argument
437 mmp_thread_t *mmp = &spa->spa_mmp; in mmp_write_uberblock()
444 spa_config_enter(spa, SCL_STATE, mmp_tag, RW_READER); in mmp_write_uberblock()
448 "gethrtime %llu", spa_name(spa), lock_acquire_time, in mmp_write_uberblock()
453 error = mmp_next_leaf(spa); in mmp_write_uberblock()
464 mmp_delay_update(spa, B_FALSE); in mmp_write_uberblock()
479 "gethrtime %llu fail_mask %#x", spa_name(spa), in mmp_write_uberblock()
483 spa_config_exit(spa, SCL_STATE, mmp_tag); in mmp_write_uberblock()
487 vd = spa->spa_mmp.mmp_last_leaf; in mmp_write_uberblock()
492 spa_name(spa), gethrtime(), vd->vdev_guid); in mmp_write_uberblock()
496 mmp->mmp_zio_root = zio_root(spa, NULL, NULL, in mmp_write_uberblock()
519 zio_t *zio = zio_null(mmp->mmp_zio_root, spa, NULL, NULL, NULL, flags); in mmp_write_uberblock()
548 spa_t *spa = (spa_t *)arg; in mmp_thread() local
549 mmp_thread_t *mmp = &spa->spa_mmp; in mmp_thread()
550 boolean_t suspended = spa_suspended(spa); in mmp_thread()
551 boolean_t multihost = spa_multihost(spa); in mmp_thread()
570 int leaves = MAX(vdev_count_leaves(spa), 1); in mmp_thread()
576 suspended = spa_suspended(spa); in mmp_thread()
577 multihost = spa_multihost(spa); in mmp_thread()
614 spa_name(spa), gethrtime(), last_mmp_interval, in mmp_thread()
630 spa_name(spa), last_spa_multihost, multihost, in mmp_thread()
657 spa_name(spa), (u_longlong_t)gethrtime(), in mmp_thread()
665 spa_name(spa), in mmp_thread()
668 zio_suspend(spa, NULL, ZIO_SUSPEND_MMP); in mmp_thread()
672 mmp_write_uberblock(spa); in mmp_thread()
702 mmp_signal_thread(spa_t *spa) in mmp_signal_thread() argument
704 mmp_thread_t *mmp = &spa->spa_mmp; in mmp_signal_thread()
715 spa_t *spa = NULL; in mmp_signal_all_threads() local
718 while ((spa = spa_next(spa))) { in mmp_signal_all_threads()
719 if (spa->spa_state == POOL_STATE_ACTIVE) in mmp_signal_all_threads()
720 mmp_signal_thread(spa); in mmp_signal_all_threads()