Lines Matching refs:scl

458 		spa_config_lock_t *scl = &spa->spa_config_lock[i];  in spa_config_lock_init()  local
459 mutex_init(&scl->scl_lock, NULL, MUTEX_DEFAULT, NULL); in spa_config_lock_init()
460 cv_init(&scl->scl_cv, NULL, CV_DEFAULT, NULL); in spa_config_lock_init()
461 scl->scl_writer = NULL; in spa_config_lock_init()
462 scl->scl_write_wanted = 0; in spa_config_lock_init()
463 scl->scl_count = 0; in spa_config_lock_init()
471 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_lock_destroy() local
472 mutex_destroy(&scl->scl_lock); in spa_config_lock_destroy()
473 cv_destroy(&scl->scl_cv); in spa_config_lock_destroy()
474 ASSERT(scl->scl_writer == NULL); in spa_config_lock_destroy()
475 ASSERT(scl->scl_write_wanted == 0); in spa_config_lock_destroy()
476 ASSERT(scl->scl_count == 0); in spa_config_lock_destroy()
484 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_tryenter() local
487 mutex_enter(&scl->scl_lock); in spa_config_tryenter()
489 if (scl->scl_writer || scl->scl_write_wanted) { in spa_config_tryenter()
490 mutex_exit(&scl->scl_lock); in spa_config_tryenter()
496 ASSERT(scl->scl_writer != curthread); in spa_config_tryenter()
497 if (scl->scl_count != 0) { in spa_config_tryenter()
498 mutex_exit(&scl->scl_lock); in spa_config_tryenter()
503 scl->scl_writer = curthread; in spa_config_tryenter()
505 scl->scl_count++; in spa_config_tryenter()
506 mutex_exit(&scl->scl_lock); in spa_config_tryenter()
521 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_enter_impl() local
522 if (scl->scl_writer == curthread) in spa_config_enter_impl()
526 mutex_enter(&scl->scl_lock); in spa_config_enter_impl()
528 while (scl->scl_writer || in spa_config_enter_impl()
529 (!mmp_flag && scl->scl_write_wanted)) { in spa_config_enter_impl()
530 cv_wait(&scl->scl_cv, &scl->scl_lock); in spa_config_enter_impl()
533 ASSERT(scl->scl_writer != curthread); in spa_config_enter_impl()
534 while (scl->scl_count != 0) { in spa_config_enter_impl()
535 scl->scl_write_wanted++; in spa_config_enter_impl()
536 cv_wait(&scl->scl_cv, &scl->scl_lock); in spa_config_enter_impl()
537 scl->scl_write_wanted--; in spa_config_enter_impl()
539 scl->scl_writer = curthread; in spa_config_enter_impl()
541 scl->scl_count++; in spa_config_enter_impl()
542 mutex_exit(&scl->scl_lock); in spa_config_enter_impl()
573 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_exit() local
576 mutex_enter(&scl->scl_lock); in spa_config_exit()
577 ASSERT(scl->scl_count > 0); in spa_config_exit()
578 if (--scl->scl_count == 0) { in spa_config_exit()
579 ASSERT(scl->scl_writer == NULL || in spa_config_exit()
580 scl->scl_writer == curthread); in spa_config_exit()
581 scl->scl_writer = NULL; /* OK in either case */ in spa_config_exit()
582 cv_broadcast(&scl->scl_cv); in spa_config_exit()
584 mutex_exit(&scl->scl_lock); in spa_config_exit()
594 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_held() local
597 if ((rw == RW_READER && scl->scl_count != 0) || in spa_config_held()
598 (rw == RW_WRITER && scl->scl_writer == curthread)) in spa_config_held()