Lines Matching refs:sa
325 sa_os_t *sa = hdl->sa_os->os_sa; in sa_attr_op() local
341 SA_ATTR_INFO(sa, hdl->sa_bonus_tab, in sa_attr_op()
353 SA_ATTR_INFO(sa, hdl->sa_spill_tab, in sa_attr_op()
407 sa_os_t *sa = os->os_sa; in sa_add_layout_entry() local
412 ASSERT(MUTEX_HELD(&sa->sa_lock)); in sa_add_layout_entry()
425 if (sa->sa_layout_attr_obj == 0) { in sa_add_layout_entry()
426 sa->sa_layout_attr_obj = zap_create_link(os, in sa_add_layout_entry()
428 sa->sa_master_obj, SA_LAYOUTS, tx); in sa_add_layout_entry()
441 if (sa->sa_attr_table[tb->lot_attrs[i]].sa_length == 0) in sa_add_layout_entry()
445 avl_add(&sa->sa_layout_num_tree, tb); in sa_add_layout_entry()
448 if ((findtb = avl_find(&sa->sa_layout_hash_tree, tb, &loc)) != NULL) { in sa_add_layout_entry()
450 findtb = AVL_NEXT(&sa->sa_layout_hash_tree, findtb)) { in sa_add_layout_entry()
456 avl_add(&sa->sa_layout_hash_tree, tb); in sa_add_layout_entry()
466 sa_os_t *sa = os->os_sa; in sa_find_layout() local
469 mutex_enter(&sa->sa_lock); in sa_find_layout()
472 tb = avl_find(&sa->sa_layout_hash_tree, &tbsearch, &loc); in sa_find_layout()
475 tb = AVL_NEXT(&sa->sa_layout_hash_tree, tb)) { in sa_find_layout()
484 avl_numnodes(&sa->sa_layout_num_tree), hash, B_TRUE, tx); in sa_find_layout()
486 mutex_exit(&sa->sa_lock); in sa_find_layout()
544 sa_find_sizes(sa_os_t *sa, sa_bulk_attr_t *attr_desc, int attr_count, in sa_find_sizes() argument
555 if (buftype == SA_BONUS && sa->sa_force_spill) { in sa_find_sizes()
582 is_var_sz = (SA_REGISTERED_LEN(sa, attr_desc[i].sa_attr) == 0); in sa_find_sizes()
649 sa_os_t *sa = hdl->sa_os->os_sa; in sa_build_layouts() local
670 hdrsize = sa_find_sizes(sa, attr_desc, attr_count, hdl->sa_bonus, in sa_build_layouts()
693 spillhdrsize = sa_find_sizes(sa, &attr_desc[i], in sa_build_layouts()
713 buf_space = (sa->sa_force_spill) ? in sa_build_layouts()
728 length = SA_REGISTERED_LEN(sa, attrs[i]); in sa_build_layouts()
735 if (buftype == SA_BONUS && !sa->sa_force_spill) { in sa_build_layouts()
758 if (sa->sa_attr_table[attrs[i]].sa_length == 0) { in sa_build_layouts()
786 if (!sa->sa_force_spill) in sa_build_layouts()
808 sa_free_attr_table(sa_os_t *sa) in sa_free_attr_table() argument
812 if (sa->sa_attr_table == NULL) in sa_free_attr_table()
815 for (i = 0; i != sa->sa_num_attrs; i++) { in sa_free_attr_table()
816 if (sa->sa_attr_table[i].sa_name) in sa_free_attr_table()
817 kmem_free(sa->sa_attr_table[i].sa_name, in sa_free_attr_table()
818 strlen(sa->sa_attr_table[i].sa_name) + 1); in sa_free_attr_table()
821 kmem_free(sa->sa_attr_table, in sa_free_attr_table()
822 sizeof (sa_attr_table_t) * sa->sa_num_attrs); in sa_free_attr_table()
824 sa->sa_attr_table = NULL; in sa_free_attr_table()
830 sa_os_t *sa = os->os_sa; in sa_attr_table_setup() local
842 sa->sa_user_table = in sa_attr_table_setup()
844 sa->sa_user_table_sz = count * sizeof (sa_attr_type_t); in sa_attr_table_setup()
846 if (sa->sa_reg_attr_obj != 0) { in sa_attr_table_setup()
847 error = zap_count(os, sa->sa_reg_attr_obj, in sa_attr_table_setup()
873 sa->sa_user_table[i] = in sa_attr_table_setup()
882 if (sa->sa_reg_attr_obj) in sa_attr_table_setup()
883 error = zap_lookup(os, sa->sa_reg_attr_obj, in sa_attr_table_setup()
889 sa->sa_user_table[i] = (sa_attr_type_t)sa_attr_count; in sa_attr_table_setup()
893 sa->sa_user_table[i] = ATTR_NUM(attr_value); in sa_attr_table_setup()
900 sa->sa_num_attrs = sa_attr_count; in sa_attr_table_setup()
901 tb = sa->sa_attr_table = in sa_attr_table_setup()
910 if (sa->sa_reg_attr_obj) { in sa_attr_table_setup()
911 for (zap_cursor_init(&zc, os, sa->sa_reg_attr_obj); in sa_attr_table_setup()
963 attr_id = sa->sa_user_table[i]; in sa_attr_table_setup()
976 sa->sa_need_attr_registration = in sa_attr_table_setup()
981 kmem_free(sa->sa_user_table, count * sizeof (sa_attr_type_t)); in sa_attr_table_setup()
982 sa->sa_user_table = NULL; in sa_attr_table_setup()
983 sa_free_attr_table(sa); in sa_attr_table_setup()
993 sa_os_t *sa; in sa_setup() local
1008 sa = kmem_zalloc(sizeof (sa_os_t), KM_SLEEP); in sa_setup()
1009 mutex_init(&sa->sa_lock, NULL, MUTEX_DEFAULT, NULL); in sa_setup()
1010 sa->sa_master_obj = sa_obj; in sa_setup()
1012 os->os_sa = sa; in sa_setup()
1013 mutex_enter(&sa->sa_lock); in sa_setup()
1015 avl_create(&sa->sa_layout_num_tree, layout_num_compare, in sa_setup()
1017 avl_create(&sa->sa_layout_hash_tree, layout_hash_compare, in sa_setup()
1022 8, 1, &sa->sa_layout_attr_obj); in sa_setup()
1026 8, 1, &sa->sa_reg_attr_obj); in sa_setup()
1034 if (sa->sa_layout_attr_obj != 0) { in sa_setup()
1037 error = zap_count(os, sa->sa_layout_attr_obj, in sa_setup()
1049 for (zap_cursor_init(&zc, os, sa->sa_layout_attr_obj); in sa_setup()
1058 if ((error = (zap_lookup(os, sa->sa_layout_attr_obj, in sa_setup()
1081 if (avl_numnodes(&sa->sa_layout_num_tree) != layout_count) { in sa_setup()
1098 mutex_exit(&sa->sa_lock); in sa_setup()
1102 sa_free_attr_table(sa); in sa_setup()
1103 if (sa->sa_user_table) in sa_setup()
1104 kmem_free(sa->sa_user_table, sa->sa_user_table_sz); in sa_setup()
1105 mutex_exit(&sa->sa_lock); in sa_setup()
1106 avl_destroy(&sa->sa_layout_hash_tree); in sa_setup()
1107 avl_destroy(&sa->sa_layout_num_tree); in sa_setup()
1108 mutex_destroy(&sa->sa_lock); in sa_setup()
1109 kmem_free(sa, sizeof (sa_os_t)); in sa_setup()
1116 sa_os_t *sa = os->os_sa; in sa_tear_down() local
1120 kmem_free(sa->sa_user_table, sa->sa_user_table_sz); in sa_tear_down()
1124 sa_free_attr_table(sa); in sa_tear_down()
1127 while (layout = avl_destroy_nodes(&sa->sa_layout_hash_tree, &cookie)) { in sa_tear_down()
1136 while (layout = avl_destroy_nodes(&sa->sa_layout_num_tree, &cookie)) { in sa_tear_down()
1142 avl_destroy(&sa->sa_layout_hash_tree); in sa_tear_down()
1143 avl_destroy(&sa->sa_layout_num_tree); in sa_tear_down()
1144 mutex_destroy(&sa->sa_lock); in sa_tear_down()
1146 kmem_free(sa, sizeof (sa_os_t)); in sa_tear_down()
1172 sa_os_t *sa = os->os_sa; in sa_attr_iter() local
1179 tb = avl_find(&sa->sa_layout_num_tree, &search, &loc); in sa_attr_iter()
1196 reg_length = sa->sa_attr_table[tb->lot_attrs[i]].sa_length; in sa_attr_iter()
1219 sa_os_t *sa = hdl->sa_os->os_sa; in sa_byteswap_cb() local
1221 sa_bswap_table[sa->sa_attr_table[attr].sa_byteswap](attr_addr, length); in sa_byteswap_cb()
1229 sa_os_t *sa = hdl->sa_os->os_sa; in sa_byteswap() local
1233 ASSERT(MUTEX_HELD(&sa->sa_lock)); in sa_byteswap()
1271 sa_os_t *sa = hdl->sa_os->os_sa; in sa_build_index() local
1276 mutex_enter(&sa->sa_lock); in sa_build_index()
1294 mutex_exit(&sa->sa_lock); in sa_build_index()
1308 sa_os_t *sa = os->os_sa; in sa_idx_tab_rele() local
1314 mutex_enter(&sa->sa_lock); in sa_idx_tab_rele()
1323 sizeof (uint32_t) * sa->sa_num_attrs); in sa_idx_tab_rele()
1326 mutex_exit(&sa->sa_lock); in sa_idx_tab_rele()
1332 sa_os_t *sa = os->os_sa; in sa_idx_tab_hold() local
1334 ASSERT(MUTEX_HELD(&sa->sa_lock)); in sa_idx_tab_hold()
1492 sa_os_t *sa = os->os_sa; in sa_find_idx_tab() local
1507 tb = avl_find(&sa->sa_layout_num_tree, &search, &loc); in sa_find_idx_tab()
1543 kmem_zalloc(sizeof (uint32_t) * sa->sa_num_attrs, KM_SLEEP); in sa_find_idx_tab()
1572 sa_os_t *sa = hdl->sa_os->os_sa; in sa_attr_register_sync() local
1573 sa_attr_table_t *tb = sa->sa_attr_table; in sa_attr_register_sync()
1576 mutex_enter(&sa->sa_lock); in sa_attr_register_sync()
1578 if (!sa->sa_need_attr_registration || sa->sa_master_obj == NULL) { in sa_attr_register_sync()
1579 mutex_exit(&sa->sa_lock); in sa_attr_register_sync()
1583 if (sa->sa_reg_attr_obj == NULL) { in sa_attr_register_sync()
1584 sa->sa_reg_attr_obj = zap_create_link(hdl->sa_os, in sa_attr_register_sync()
1586 sa->sa_master_obj, SA_REGISTRY, tx); in sa_attr_register_sync()
1588 for (i = 0; i != sa->sa_num_attrs; i++) { in sa_attr_register_sync()
1589 if (sa->sa_attr_table[i].sa_registered) in sa_attr_register_sync()
1593 VERIFY(0 == zap_update(hdl->sa_os, sa->sa_reg_attr_obj, in sa_attr_register_sync()
1597 sa->sa_need_attr_registration = B_FALSE; in sa_attr_register_sync()
1598 mutex_exit(&sa->sa_lock); in sa_attr_register_sync()
1614 sa_os_t *sa = hdl->sa_os->os_sa; in sa_replace_all_by_template_locked() local
1616 if (sa->sa_need_attr_registration) in sa_replace_all_by_template_locked()
1643 sa_os_t *sa = hdl->sa_os->os_sa; in sa_modify_attrs() local
1723 ASSERT(SA_REGISTERED_LEN(sa, attr) == 0); in sa_modify_attrs()
1728 length = SA_REGISTERED_LEN(sa, attr); in sa_modify_attrs()
1748 length = SA_REGISTERED_LEN(sa, newattr); in sa_modify_attrs()
1772 sa_os_t *sa = hdl->sa_os->os_sa; in sa_bulk_update_impl() local
1781 if (sa->sa_need_attr_registration) in sa_bulk_update_impl()
1785 if (error == 0 && !IS_SA_BONUSTYPE(bonustype) && sa->sa_update_cb) in sa_bulk_update_impl()
1786 sa->sa_update_cb(hdl, tx); in sa_bulk_update_impl()
1962 sa_os_t *sa = os->os_sa; in sa_set_sa_object() local
1964 if (sa->sa_master_obj) in sa_set_sa_object()
1967 sa->sa_master_obj = sa_object; in sa_set_sa_object()