Lines Matching refs:tpg

119 iscsit_tpg_portal_lookup_locked(iscsit_tpg_t *tpg,
145 iscsit_tpg_create(it_tpg_t *tpg);
148 iscsit_tpg_modify(iscsit_tpg_t *tpg, it_tpg_t *cfg_tpg);
151 iscsit_tpg_destroy(iscsit_tpg_t *tpg);
154 iscsit_portal_create(iscsit_tpg_t *tpg, struct sockaddr_storage *sa);
1353 iscsit_tpg_t *tpg; in iscsit_tpgt_create() local
1357 tpg = iscsit_tpg_lookup_locked(cfg_tpgt->tpgt_tpg_name); in iscsit_tpgt_create()
1358 if (tpg == NULL) in iscsit_tpgt_create()
1363 result->tpgt_tpg = tpg; in iscsit_tpgt_create()
1508 iscsit_tpg_t *tpg, *next_tpg; in iscsit_config_merge_tpg() local
1517 for (tpg = avl_first(&iscsit_global.global_tpg_list); in iscsit_config_merge_tpg()
1518 tpg != NULL; in iscsit_config_merge_tpg()
1519 tpg = next_tpg) { in iscsit_config_merge_tpg()
1520 next_tpg = AVL_NEXT(&iscsit_global.global_tpg_list, tpg); in iscsit_config_merge_tpg()
1522 if (it_tpg_lookup(cfg, tpg->tpg_name) == NULL) { in iscsit_config_merge_tpg()
1532 avl_remove(&iscsit_global.global_tpg_list, tpg); in iscsit_config_merge_tpg()
1533 list_insert_tail(tpg_del_list, tpg); in iscsit_config_merge_tpg()
1542 tpg = iscsit_tpg_lookup_locked(cfg_tpg->tpg_name); in iscsit_config_merge_tpg()
1544 if (tpg == NULL) { in iscsit_config_merge_tpg()
1545 tpg = iscsit_tpg_create(cfg_tpg); in iscsit_config_merge_tpg()
1546 ASSERT(tpg != NULL); in iscsit_config_merge_tpg()
1547 avl_add(&iscsit_global.global_tpg_list, tpg); in iscsit_config_merge_tpg()
1549 mutex_enter(&tpg->tpg_mutex); in iscsit_config_merge_tpg()
1550 iscsit_tpg_modify(tpg, cfg_tpg); in iscsit_config_merge_tpg()
1551 mutex_exit(&tpg->tpg_mutex); in iscsit_config_merge_tpg()
1552 iscsit_tpg_rele(tpg); in iscsit_config_merge_tpg()
1563 iscsit_tpg_t *tpg, *next_tpg; in iscsit_config_destroy_tpgs() local
1566 for (tpg = list_head(tpg_del_list); in iscsit_config_destroy_tpgs()
1567 tpg != NULL; in iscsit_config_destroy_tpgs()
1568 tpg = next_tpg) { in iscsit_config_destroy_tpgs()
1569 next_tpg = list_next(tpg_del_list, tpg); in iscsit_config_destroy_tpgs()
1570 list_remove(tpg_del_list, tpg); in iscsit_config_destroy_tpgs()
1571 idm_refcnt_wait_ref(&tpg->tpg_refcnt); in iscsit_config_destroy_tpgs()
1574 iscsit_tpg_destroy(tpg); in iscsit_config_destroy_tpgs()
1608 iscsit_tpg_t *tpg; in iscsit_tpg_create() local
1610 tpg = kmem_zalloc(sizeof (*tpg), KM_SLEEP); in iscsit_tpg_create()
1612 mutex_init(&tpg->tpg_mutex, NULL, MUTEX_DEFAULT, NULL); in iscsit_tpg_create()
1613 (void) strlcpy(tpg->tpg_name, cfg_tpg->tpg_name, MAX_TPG_NAMELEN); in iscsit_tpg_create()
1614 avl_create(&tpg->tpg_portal_list, iscsit_portal_avl_compare, in iscsit_tpg_create()
1616 idm_refcnt_init(&tpg->tpg_refcnt, tpg); in iscsit_tpg_create()
1618 mutex_enter(&tpg->tpg_mutex); in iscsit_tpg_create()
1619 iscsit_tpg_modify(tpg, cfg_tpg); in iscsit_tpg_create()
1620 mutex_exit(&tpg->tpg_mutex); in iscsit_tpg_create()
1623 return (tpg); in iscsit_tpg_create()
1627 iscsit_tpg_modify(iscsit_tpg_t *tpg, it_tpg_t *cfg_tpg) in iscsit_tpg_modify() argument
1633 for (portal = avl_first(&tpg->tpg_portal_list); in iscsit_tpg_modify()
1636 next_portal = AVL_NEXT(&tpg->tpg_portal_list, portal); in iscsit_tpg_modify()
1638 avl_remove(&tpg->tpg_portal_list, portal); in iscsit_tpg_modify()
1648 if (avl_is_empty(&tpg->tpg_portal_list)) { in iscsit_tpg_modify()
1649 tpg->tpg_online--; in iscsit_tpg_modify()
1657 if ((portal = iscsit_tpg_portal_lookup_locked(tpg, in iscsit_tpg_modify()
1659 (void) iscsit_portal_create(tpg, in iscsit_tpg_modify()
1668 iscsit_tpg_destroy(iscsit_tpg_t *tpg) in iscsit_tpg_destroy() argument
1672 for (portal = avl_first(&tpg->tpg_portal_list); in iscsit_tpg_destroy()
1675 next_portal = AVL_NEXT(&tpg->tpg_portal_list, portal); in iscsit_tpg_destroy()
1676 avl_remove(&tpg->tpg_portal_list, portal); in iscsit_tpg_destroy()
1680 idm_refcnt_wait_ref(&tpg->tpg_refcnt); in iscsit_tpg_destroy()
1681 idm_refcnt_destroy(&tpg->tpg_refcnt); in iscsit_tpg_destroy()
1682 avl_destroy(&tpg->tpg_portal_list); in iscsit_tpg_destroy()
1683 mutex_destroy(&tpg->tpg_mutex); in iscsit_tpg_destroy()
1684 kmem_free(tpg, sizeof (*tpg)); in iscsit_tpg_destroy()
1689 iscsit_tpg_hold(iscsit_tpg_t *tpg) in iscsit_tpg_hold() argument
1691 idm_refcnt_hold(&tpg->tpg_refcnt); in iscsit_tpg_hold()
1695 iscsit_tpg_rele(iscsit_tpg_t *tpg) in iscsit_tpg_rele() argument
1697 idm_refcnt_rele(&tpg->tpg_refcnt); in iscsit_tpg_rele()
1703 iscsit_tpg_t *tpg; in iscsit_tpg_createdefault() local
1705 tpg = kmem_zalloc(sizeof (*tpg), KM_SLEEP); in iscsit_tpg_createdefault()
1707 mutex_init(&tpg->tpg_mutex, NULL, MUTEX_DEFAULT, NULL); in iscsit_tpg_createdefault()
1708 (void) strlcpy(tpg->tpg_name, ISCSIT_DEFAULT_TPG, MAX_TPG_NAMELEN); in iscsit_tpg_createdefault()
1709 avl_create(&tpg->tpg_portal_list, iscsit_portal_avl_compare, in iscsit_tpg_createdefault()
1711 idm_refcnt_init(&tpg->tpg_refcnt, tpg); in iscsit_tpg_createdefault()
1714 if (iscsit_portal_create(tpg, NULL) == NULL) { in iscsit_tpg_createdefault()
1715 iscsit_tpg_destroy(tpg); in iscsit_tpg_createdefault()
1719 return (tpg); in iscsit_tpg_createdefault()
1723 iscsit_tpg_destroydefault(iscsit_tpg_t *tpg) in iscsit_tpg_destroydefault() argument
1727 portal = avl_first(&tpg->tpg_portal_list); in iscsit_tpg_destroydefault()
1729 avl_remove(&tpg->tpg_portal_list, portal); in iscsit_tpg_destroydefault()
1732 idm_refcnt_wait_ref(&tpg->tpg_refcnt); in iscsit_tpg_destroydefault()
1733 idm_refcnt_destroy(&tpg->tpg_refcnt); in iscsit_tpg_destroydefault()
1734 avl_destroy(&tpg->tpg_portal_list); in iscsit_tpg_destroydefault()
1735 mutex_destroy(&tpg->tpg_mutex); in iscsit_tpg_destroydefault()
1736 kmem_free(tpg, sizeof (*tpg)); in iscsit_tpg_destroydefault()
1760 iscsit_tpg_online(iscsit_tpg_t *tpg) in iscsit_tpg_online() argument
1765 mutex_enter(&tpg->tpg_mutex); in iscsit_tpg_online()
1766 if (tpg->tpg_online == 0) { in iscsit_tpg_online()
1767 for (portal = avl_first(&tpg->tpg_portal_list); in iscsit_tpg_online()
1769 portal = AVL_NEXT(&tpg->tpg_portal_list, portal)) { in iscsit_tpg_online()
1777 tpg->tpg_online++; in iscsit_tpg_online()
1779 mutex_exit(&tpg->tpg_mutex); in iscsit_tpg_online()
1784 for (portal = avl_first(&tpg->tpg_portal_list); in iscsit_tpg_online()
1786 portal = AVL_NEXT(&tpg->tpg_portal_list, portal)) { in iscsit_tpg_online()
1789 mutex_exit(&tpg->tpg_mutex); in iscsit_tpg_online()
1794 iscsit_tpg_offline(iscsit_tpg_t *tpg) in iscsit_tpg_offline() argument
1798 mutex_enter(&tpg->tpg_mutex); in iscsit_tpg_offline()
1799 tpg->tpg_online--; in iscsit_tpg_offline()
1800 if (tpg->tpg_online == 0) { in iscsit_tpg_offline()
1801 for (portal = avl_first(&tpg->tpg_portal_list); in iscsit_tpg_offline()
1803 portal = AVL_NEXT(&tpg->tpg_portal_list, portal)) { in iscsit_tpg_offline()
1807 mutex_exit(&tpg->tpg_mutex); in iscsit_tpg_offline()
1811 iscsit_tpg_portal_lookup(iscsit_tpg_t *tpg, struct sockaddr_storage *sa) in iscsit_tpg_portal_lookup() argument
1815 mutex_enter(&tpg->tpg_mutex); in iscsit_tpg_portal_lookup()
1816 result = iscsit_tpg_portal_lookup_locked(tpg, sa); in iscsit_tpg_portal_lookup()
1817 mutex_exit(&tpg->tpg_mutex); in iscsit_tpg_portal_lookup()
1823 iscsit_tpg_portal_lookup_locked(iscsit_tpg_t *tpg, in iscsit_tpg_portal_lookup_locked() argument
1831 if ((result = avl_find(&tpg->tpg_portal_list, &tmp_portal, NULL)) != in iscsit_tpg_portal_lookup_locked()
1840 iscsit_portal_create(iscsit_tpg_t *tpg, struct sockaddr_storage *sa) in iscsit_portal_create() argument
1862 avl_add(&tpg->tpg_portal_list, portal); in iscsit_portal_create()