Lines Matching full:scl
457 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_lock_init() local
458 mutex_init(&scl->scl_lock, NULL, MUTEX_DEFAULT, NULL); in spa_config_lock_init()
459 cv_init(&scl->scl_cv, NULL, CV_DEFAULT, NULL); in spa_config_lock_init()
460 scl->scl_writer = NULL; in spa_config_lock_init()
461 scl->scl_write_wanted = 0; in spa_config_lock_init()
462 scl->scl_count = 0; in spa_config_lock_init()
470 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_lock_destroy() local
471 mutex_destroy(&scl->scl_lock); in spa_config_lock_destroy()
472 cv_destroy(&scl->scl_cv); in spa_config_lock_destroy()
473 ASSERT(scl->scl_writer == NULL); in spa_config_lock_destroy()
474 ASSERT(scl->scl_write_wanted == 0); in spa_config_lock_destroy()
475 ASSERT(scl->scl_count == 0); in spa_config_lock_destroy()
483 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_tryenter() local
486 mutex_enter(&scl->scl_lock); in spa_config_tryenter()
488 if (scl->scl_writer || scl->scl_write_wanted) { in spa_config_tryenter()
489 mutex_exit(&scl->scl_lock); in spa_config_tryenter()
495 ASSERT(scl->scl_writer != curthread); in spa_config_tryenter()
496 if (scl->scl_count != 0) { in spa_config_tryenter()
497 mutex_exit(&scl->scl_lock); in spa_config_tryenter()
502 scl->scl_writer = curthread; in spa_config_tryenter()
504 scl->scl_count++; in spa_config_tryenter()
505 mutex_exit(&scl->scl_lock); in spa_config_tryenter()
520 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_enter_impl() local
521 if (scl->scl_writer == curthread) in spa_config_enter_impl()
525 mutex_enter(&scl->scl_lock); in spa_config_enter_impl()
527 while (scl->scl_writer || in spa_config_enter_impl()
528 (!mmp_flag && scl->scl_write_wanted)) { in spa_config_enter_impl()
529 cv_wait(&scl->scl_cv, &scl->scl_lock); in spa_config_enter_impl()
532 ASSERT(scl->scl_writer != curthread); in spa_config_enter_impl()
533 while (scl->scl_count != 0) { in spa_config_enter_impl()
534 scl->scl_write_wanted++; in spa_config_enter_impl()
535 cv_wait(&scl->scl_cv, &scl->scl_lock); in spa_config_enter_impl()
536 scl->scl_write_wanted--; in spa_config_enter_impl()
538 scl->scl_writer = curthread; in spa_config_enter_impl()
540 scl->scl_count++; in spa_config_enter_impl()
541 mutex_exit(&scl->scl_lock); in spa_config_enter_impl()
572 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_exit() local
575 mutex_enter(&scl->scl_lock); in spa_config_exit()
576 ASSERT(scl->scl_count > 0); in spa_config_exit()
577 if (--scl->scl_count == 0) { in spa_config_exit()
578 ASSERT(scl->scl_writer == NULL || in spa_config_exit()
579 scl->scl_writer == curthread); in spa_config_exit()
580 scl->scl_writer = NULL; /* OK in either case */ in spa_config_exit()
581 cv_broadcast(&scl->scl_cv); in spa_config_exit()
583 mutex_exit(&scl->scl_lock); in spa_config_exit()
593 spa_config_lock_t *scl = &spa->spa_config_lock[i]; in spa_config_held() local
596 if ((rw == RW_READER && scl->scl_count != 0) || in spa_config_held()
597 (rw == RW_WRITER && scl->scl_writer == curthread)) in spa_config_held()