Lines Matching refs:setno

322 timeout_initiator(set_t setno, md_mn_msgclass_t class)
332 "timeout_initiator set = %d, class = %d\n", setno, class);
334 transp = mdmn_get_initiator_table_transp(setno, class);
335 mdmn_get_initiator_table_id(setno, class, &mid);
350 mdmn_unregister_initiator_table(setno, class);
377 set_t setno;
384 for (setno = 1; setno < MD_MAXSETS; setno++) {
385 if (md_mn_set_inited[setno] != MDMN_SET_READY) {
390 mx = mdmn_get_initiator_table_mx(setno, class);
395 mdmn_get_initiator_table_time(setno, class);
397 timeout_initiator(setno, class);
585 * mdmn_init_client(setno, nodeid)
586 * called if client[setno][nodeid] is NULL
599 mdmn_init_client(set_t setno, md_mn_nodeid_t nid)
603 md_set_desc *sd; /* just an abbr for set_descriptor[setno] */
605 sd = set_descriptor[setno];
616 (void) rw_unlock(&set_desc_rwlock[setno]);
617 (void) rw_wrlock(&set_desc_rwlock[setno]);
618 sp = metasetnosetname(setno, &ep);
625 (void) rw_unlock(&set_desc_rwlock[setno]);
627 (void) rw_rdlock(&set_desc_rwlock[setno]);
630 set_descriptor[setno] = sd;
632 (void) rw_unlock(&set_desc_rwlock[setno]);
633 (void) rw_rdlock(&set_desc_rwlock[setno]);
645 "FATAL: node %d not found in set %d\n", nid, setno);
646 (void) rw_unlock(&set_desc_rwlock[setno]);
656 node->nd_nodename ? node->nd_nodename : "NULL", setno);
657 (void) rw_unlock(&set_desc_rwlock[setno]);
662 if (client[setno][nid] == (CLIENT *) NULL) {
674 while ((client[setno][nid] == (CLIENT *) NULL) &&
676 client[setno][nid] = meta_client_create_retry(
689 if (client[setno][nid] == (CLIENT *) NULL) {
691 (void) rw_unlock(&set_desc_rwlock[setno]);
699 clnt_control(client[setno][nid], CLSET_TIMEOUT,
703 (void) rw_unlock(&set_desc_rwlock[setno]);
708 * check_client(setno, nodeid)
710 * must be called with reader lock held for set_desc_rwlock[setno]
711 * and must be called with reader lock held for client_rwlock[setno]
721 check_client(set_t setno, md_mn_nodeid_t nodeid)
725 while ((client[setno][nodeid] == (CLIENT *)NULL) && (ret == 0)) {
727 (void) rw_unlock(&client_rwlock[setno]);
729 (void) rw_wrlock(&client_rwlock[setno]);
730 if (mdmn_init_client(setno, nodeid) != 0) {
734 (void) rw_unlock(&client_rwlock[setno]);
736 (void) rw_rdlock(&client_rwlock[setno]);
742 * mdmn_init_set(setno, todo)
743 * setno is the number of the set to be initialized.
748 * both set_desc_rwlock[setno] and client_rwlock[setno] as a writer, before
752 mdmn_init_set(set_t setno, int todo)
756 md_set_desc *sd; /* just an abbr for set_descriptor[setno] */
766 ((md_mn_set_inited[setno] & MDMN_SET_MUTEXES) == 0)) {
767 (void) mutex_init(&mdmn_busy_mutex[setno], USYNC_THREAD, NULL);
768 (void) cond_init(&mdmn_busy_cv[setno], USYNC_THREAD, NULL);
769 (void) rwlock_init(&client_rwlock[setno], USYNC_THREAD, NULL);
770 (void) rwlock_init(&set_desc_rwlock[setno], USYNC_THREAD, NULL);
773 (void) mutex_init(mdmn_get_master_table_mx(setno,
775 (void) cond_init(mdmn_get_master_table_cv(setno, class),
777 (void) mutex_init(mdmn_get_initiator_table_mx(setno,
780 md_mn_set_inited[setno] |= MDMN_SET_MUTEXES;
783 ((md_mn_set_inited[setno] & MDMN_SET_MCT) == 0)) {
792 MD_MN_MSG_COMP_TABLE, setno);
797 * The mapped areas are stored in mct[setno].
869 mct[setno] = (md_mn_mct_t *)addr;
873 (void) mutex_init(&(mct_mutex[setno][class]),
877 md_mn_set_inited[setno] |= MDMN_SET_MCT;
885 (md_mn_set_inited[setno] & MDMN_SET_NODES)) {
889 if ((sp = metasetnosetname(setno, &ep)) == NULL) {
891 "metasetnosetname(%d) returned NULL\n", setno);
904 "metaget_setdesc(%d) returned NULL\n", setno);
914 commd_debug(MD_MMV_INIT, "didn't yet join set %d\n", setno);
932 setno);
936 if (client[setno][nid] != (CLIENT *) NULL) {
952 while ((client[setno][nid] == (CLIENT *) NULL) &&
954 client[setno][nid] = meta_client_create_retry(
967 if (client[setno][nid] == (CLIENT *) NULL) {
992 clnt_control(client[setno][nid], CLSET_TIMEOUT,
999 set_descriptor[setno] = sd;
1000 md_mn_set_inited[setno] |= MDMN_SET_NODES;
1010 set_t setno;
1022 setno = msg->msg_setno;
1025 (void) rw_rdlock(&set_desc_rwlock[setno]);
1026 msg->msg_sender = set_descriptor[setno]->sd_mn_mynode->nd_nodeid;
1027 set_master = set_descriptor[setno]->sd_mn_master_nodeid;
1029 mx = mdmn_get_initiator_table_mx(setno, class);
1038 success = mdmn_check_initiator_table(setno, class);
1042 mdmn_get_initiator_table_id(setno, class, &active_mid);
1048 MSGID_ELEMS(msg->msg_msgid), setno, class,
1054 MSGID_ELEMS(msg->msg_msgid), setno, class, msg->msg_type);
1059 (void) rw_rdlock(&client_rwlock[setno]);
1061 if (check_client(setno, set_master)) {
1064 (void) rw_unlock(&client_rwlock[setno]);
1072 rpc_err = mdmn_work_2(msg, client[setno][set_master],
1082 (void) rw_unlock(&client_rwlock[setno]);
1083 (void) rw_wrlock(&client_rwlock[setno]);
1084 mdmn_clnt_destroy(client[setno][set_master]);
1085 if (client[setno][set_master] != (CLIENT *)NULL) {
1086 client[setno][set_master] = (CLIENT *)NULL;
1088 (void) rw_unlock(&client_rwlock[setno]);
1095 (void) rw_unlock(&client_rwlock[setno]);
1099 (void) rw_unlock(&client_rwlock[setno]);
1109 mdmn_register_initiator_table(setno, class, msg, transp);
1119 (void) rw_unlock(&set_desc_rwlock[setno]);
1170 set_t setno;
1185 setno = msg->msg_setno;
1191 (void) mutex_lock(&mct_mutex[setno][class]);
1204 (void) mutex_unlock(&mct_mutex[setno][class]);
1214 (void) mutex_lock(&mct_mutex[setno][class]);
1226 (void) mutex_unlock(&mct_mutex[setno][class]);
1234 (void) mutex_unlock(&mct_mutex[setno][class]);
1259 set_t setno;
1269 setno = msg->msg_setno;
1271 mx = mdmn_get_master_table_mx(setno, class);
1272 cv = mdmn_get_master_table_cv(setno, class);
1289 (void) rw_rdlock(&client_rwlock[setno]);
1291 if (check_client(setno, nid)) {
1308 (void) rw_unlock(&client_rwlock[setno]);
1312 if (client[setno][nid] == NULL) {
1319 (void) rw_unlock(&client_rwlock[setno]);
1325 ret = mdmn_work_2(msg, client[setno][nid], nid);
1327 (void) rw_unlock(&client_rwlock[setno]);
1348 (void) rw_wrlock(&client_rwlock[setno]);
1349 mdmn_clnt_destroy(client[setno][nid]);
1350 if (client[setno][nid] != (CLIENT *)NULL) {
1351 client[setno][nid] = (CLIENT *)NULL;
1353 (void) rw_unlock(&client_rwlock[setno]);
1428 setno, class, MSGID_ELEMS(msg->msg_msgid), timeout_retries);
1434 (void) rw_wrlock(&client_rwlock[setno]);
1435 mdmn_clnt_destroy(client[setno][nid]);
1436 client[setno][nid] = (CLIENT *)NULL;
1437 (void) rw_unlock(&client_rwlock[setno]);
1444 setno, class, MSGID_ELEMS(msg->msg_msgid));
1449 err, setno, class,
1468 set_t setno;
1489 setno = msg->msg_setno;
1492 result->mmr_setno = setno;
1500 MSGID_ELEMS(msg->msg_msgid), setno, orig_class, msgtype);
1502 (void) rw_rdlock(&set_desc_rwlock[setno]);
1503 set_master = set_descriptor[setno]->sd_mn_master_nodeid;
1538 (void) mutex_lock(&mdmn_busy_mutex[setno]);
1539 mdmn_mark_class_unbusy(setno, orig_class);
1540 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
1555 (void) rw_rdlock(&client_rwlock[setno]);
1557 if (check_client(setno, sender)) {
1562 client[setno][sender], sender);
1564 (void) rw_unlock(&client_rwlock[setno]);
1581 (void) rw_unlock(&set_desc_rwlock[setno]);
1585 lr = mdmn_get_changelogrec(setno, orig_class);
1661 mx = mdmn_get_master_table_mx(setno, class);
1679 * Granularity could be finer (setno/class)
1682 (void) mutex_lock(&mdmn_busy_mutex[setno]);
1683 while (mdmn_mark_class_busy(setno, class) == FALSE) {
1684 (void) cond_wait(&mdmn_busy_cv[setno],
1685 &mdmn_busy_mutex[setno]);
1687 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
1702 &mdmn_busy_mutex[setno]);
1703 mdmn_mark_class_unbusy(setno, class);
1705 &mdmn_busy_mutex[setno]);
1718 (void) mutex_lock(&mdmn_busy_mutex[setno]);
1719 mdmn_mark_class_unbusy(setno, class);
1720 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
1733 mdmn_set_master_table_id(setno, class, &(cmsg->msg_msgid));
1737 (void) rw_rdlock(&set_desc_rwlock[setno]);
1739 for (node = set_descriptor[setno]->sd_nodelist; node;
1744 if (node == set_descriptor[setno]->sd_mn_masternode) {
1764 mdmn_set_master_table_addr(setno, class, nid);
1781 mdmn_get_master_table_res(setno, class);
1877 (void) rw_unlock(&set_desc_rwlock[setno]);
1882 (void) mutex_lock(&mdmn_busy_mutex[setno]);
1883 mdmn_mark_class_unbusy(setno, class);
1884 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
1942 (void) rw_rdlock(&client_rwlock[setno]);
1943 if (check_client(setno, sender)) {
1947 ret = mdmn_wakeup_initiator_2(result, client[setno][sender],
1950 (void) rw_unlock(&client_rwlock[setno]);
1964 (void) rw_unlock(&set_desc_rwlock[setno]);
1974 (void) mutex_lock(&mdmn_busy_mutex[setno]);
1975 mdmn_mark_class_unbusy(setno, orig_class);
1976 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2009 set_t setno;
2018 setno = msg->msg_setno;
2022 (void) rw_rdlock(&set_desc_rwlock[setno]);
2023 whoami = set_descriptor[setno]->sd_mn_mynode->nd_nodeid;
2024 (void) rw_unlock(&set_desc_rwlock[setno]);
2028 result->mmr_setno = setno;
2037 MSGID_ELEMS(msg->msg_msgid), setno, class, msgtype);
2051 (void) mutex_lock(&mct_mutex[setno][class]);
2067 (void) mutex_unlock(&mct_mutex[setno][class]);
2074 (void) mutex_lock(&mct_mutex[setno][class]);
2090 (void) mutex_unlock(&mct_mutex[setno][class]);
2105 (void) mutex_unlock(&mct_mutex[setno][class]);
2112 (void) rw_rdlock(&set_desc_rwlock[setno]);
2118 (void) rw_rdlock(&client_rwlock[setno]);
2119 if (check_client(setno, sender)) {
2126 (void) rw_unlock(&client_rwlock[setno]);
2130 client[setno][sender], sender);
2145 (void) rw_unlock(&client_rwlock[setno]);
2146 (void) rw_wrlock(&client_rwlock[setno]);
2147 mdmn_clnt_destroy(client[setno][sender]);
2148 if (client[setno][sender] != (CLIENT *)NULL) {
2149 client[setno][sender] = (CLIENT *)NULL;
2151 (void) rw_unlock(&client_rwlock[setno]);
2160 (void) rw_unlock(&client_rwlock[setno]);
2164 (void) rw_unlock(&client_rwlock[setno]);
2169 (void) rw_unlock(&set_desc_rwlock[setno]);
2195 set_t setno;
2205 setno = msg->msg_setno;
2225 MSGID_ELEMS(msg->msg_msgid), setno, class, msg->msg_type);
2279 "type=%d\n", MSGID_ELEMS(msg->msg_msgid), setno, class,
2285 if (md_mn_set_inited[setno] != MDMN_SET_READY) {
2287 if (md_mn_set_inited[setno] & MDMN_SET_MUTEXES) {
2288 (void) rw_wrlock(&set_desc_rwlock[setno]);
2289 (void) rw_wrlock(&client_rwlock[setno]);
2290 err = mdmn_init_set(setno, MDMN_SET_READY);
2291 (void) rw_unlock(&client_rwlock[setno]);
2292 (void) rw_unlock(&set_desc_rwlock[setno]);
2294 err = mdmn_init_set(setno, MDMN_SET_READY);
2311 (void) mutex_lock(&mdmn_busy_mutex[setno]);
2312 if ((mdmn_is_class_suspended(setno, class) == TRUE) &&
2314 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2323 setno, class, msg->msg_type);
2326 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2334 setno, class, msg->msg_type);
2375 set_t setno;
2409 setno = msg->msg_setno;
2411 if (md_mn_set_inited[setno] != MDMN_SET_READY) {
2413 if (md_mn_set_inited[setno] & MDMN_SET_MUTEXES) {
2414 (void) rw_wrlock(&set_desc_rwlock[setno]);
2415 (void) rw_wrlock(&client_rwlock[setno]);
2416 err = mdmn_init_set(setno, MDMN_SET_READY);
2417 (void) rw_unlock(&client_rwlock[setno]);
2418 (void) rw_unlock(&set_desc_rwlock[setno]);
2420 err = mdmn_init_set(setno, MDMN_SET_READY);
2440 MSGID_ELEMS(msg->msg_msgid), setno, class, msg->msg_type,
2454 (void) mutex_lock(&mdmn_busy_mutex[setno]);
2457 if (mdmn_is_class_locked(setno, class) == TRUE) {
2458 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2463 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2466 (void) rw_rdlock(&set_desc_rwlock[setno]);
2467 if (set_descriptor[setno]->sd_mn_am_i_master) {
2468 (void) rw_unlock(&set_desc_rwlock[setno]);
2473 (void) mutex_lock(&mdmn_busy_mutex[setno]);
2474 if ((mdmn_is_class_suspended(setno, class) == TRUE) &&
2476 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2479 "send: set %d is suspended\n", setno);
2483 if (mdmn_mark_class_busy(setno, class) == FALSE) {
2484 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2489 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2499 (void) rw_unlock(&set_desc_rwlock[setno]);
2516 MSGID_ELEMS(msg->msg_msgid), setno, class, msg->msg_type);
2529 set_t setno;
2542 setno = res->mmr_setno;
2544 if (md_mn_set_inited[setno] != MDMN_SET_READY) {
2547 if (md_mn_set_inited[setno] & MDMN_SET_MUTEXES) {
2548 (void) rw_wrlock(&set_desc_rwlock[setno]);
2549 (void) rw_wrlock(&client_rwlock[setno]);
2550 err = mdmn_init_set(setno, MDMN_SET_READY);
2551 (void) rw_unlock(&client_rwlock[setno]);
2552 (void) rw_unlock(&set_desc_rwlock[setno]);
2554 err = mdmn_init_set(setno, MDMN_SET_READY);
2573 mx = mdmn_get_initiator_table_mx(setno, class);
2577 MSGID_ELEMS(res->mmr_msgid), setno, class, res->mmr_msgtype);
2587 mdmn_get_initiator_table_id(setno, class, &initiator_table_id);
2590 transp = mdmn_get_initiator_table_transp(setno, class);
2593 mdmn_unregister_initiator_table(setno, class);
2632 set_t setno;
2652 setno = res->mmr_setno;
2654 if (md_mn_set_inited[setno] != MDMN_SET_READY) {
2657 if (md_mn_set_inited[setno] & MDMN_SET_MUTEXES) {
2658 (void) rw_wrlock(&set_desc_rwlock[setno]);
2659 (void) rw_wrlock(&client_rwlock[setno]);
2660 err = mdmn_init_set(setno, MDMN_SET_READY);
2661 (void) rw_unlock(&client_rwlock[setno]);
2662 (void) rw_unlock(&set_desc_rwlock[setno]);
2664 err = mdmn_init_set(setno, MDMN_SET_READY);
2685 MSGID_ELEMS(res->mmr_msgid), setno, class, res->mmr_msgtype,
2691 mx = mdmn_get_master_table_mx(setno, class);
2692 cv = mdmn_get_master_table_cv(setno, class);
2702 mdmn_get_master_table_id(setno, class, &master_table_id);
2703 sender = mdmn_get_master_table_addr(setno, class);
2707 mdmn_set_master_table_res(setno, class, res);
2764 set_t setno = msc->msc_set;
2782 if ((setno == 0) || (setno >= MD_MAXSETS) ||
2788 commd_debug(MD_MMV_MISC, "lock: set=%d, class=%d\n", setno, class);
2789 (void) mutex_lock(&mdmn_busy_mutex[setno]);
2791 mdmn_mark_class_locked(setno, class);
2795 mdmn_mark_class_locked(setno, class);
2798 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2820 set_t setno = msc->msc_set;
2838 if ((setno == 0) || (setno >= MD_MAXSETS) ||
2843 commd_debug(MD_MMV_MISC, "unlock: set=%d, class=%d\n", setno, class);
2845 (void) mutex_lock(&mdmn_busy_mutex[setno]);
2847 mdmn_mark_class_unlocked(setno, class);
2851 mdmn_mark_class_unlocked(setno, class);
2854 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2861 * mdmn_comm_suspend_svc_2(setno, class)
2869 * 1 <= setno < MD_MAXSETS or setno == MD_COMM_ALL_SETS
2893 * If setno is MD_COMM_ALL_SETS then we perform this on all possible sets.
2901 * MDMNE_EINVAL if setno is out of range
2912 set_t setno = msc->msc_set;
2934 setno, oclass);
2937 if (setno >= MD_MAXSETS) {
2943 /* setno == MD_COMM_ALL_SETS means: we walk thru all possible sets. */
2944 if (setno == MD_COMM_ALL_SETS) {
2948 startset = setno;
2949 endset = setno;
2952 for (setno = startset; setno <= endset; setno++) {
2954 if (md_mn_set_inited[setno] != MDMN_SET_MUTEXES) {
2955 (void) mdmn_init_set(setno, MDMN_SET_MUTEXES);
2958 (void) mutex_lock(&mdmn_busy_mutex[setno]);
2964 setno, class);
2965 *retval = mdmn_mark_class_suspended(setno,
2975 setno, oclass);
2976 *retval = mdmn_mark_class_suspended(setno, oclass,
2982 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
2997 * mdmn_comm_resume_svc_2(setno, class)
3002 * 1 <= setno < MD_MAXSETS or setno == MD_COMM_ALL_SETS
3010 * If setno is MD_COMM_ALL_SETS then we perform this on all possible sets.
3012 * If both setno is MD_COMM_ALL_SETS and class is MD_COMM_ALL_CLASSES we also
3017 * MDMNE_EINVAL if setno is out of range
3026 set_t setno = msc->msc_set;
3046 setno, oclass);
3049 if (setno > MD_MAXSETS) {
3054 if (setno == MD_COMM_ALL_SETS) {
3063 startset = setno;
3064 endset = setno;
3067 for (setno = startset; setno <= endset; setno++) {
3070 if ((md_mn_set_inited[setno] & MDMN_SET_MUTEXES) == 0) {
3071 (void) mdmn_init_set(setno, MDMN_SET_MUTEXES);
3074 (void) mutex_lock(&mdmn_busy_mutex[setno]);
3098 setno, class);
3099 mdmn_mark_class_resumed(setno, class,
3112 setno, oclass);
3113 mdmn_mark_class_resumed(setno, oclass, MDMN_SUSPEND_1);
3116 (void) mutex_unlock(&mdmn_busy_mutex[setno]);
3128 set_t setno = *setnop;
3144 commd_debug(MD_MMV_MISC, "reinit: set=%d\n", setno);
3146 (void) rw_rdlock(&set_desc_rwlock[setno]);
3153 (void) rw_wrlock(&client_rwlock[setno]);
3156 if ((set_descriptor[setno] != NULL) &&
3157 (md_mn_set_inited[setno] & MDMN_SET_NODES)) {
3159 for (node = set_descriptor[setno]->sd_nodelist; node;
3170 if (node == set_descriptor[setno]->sd_mn_mynode)
3172 mdmn_clnt_destroy(client[setno][node->nd_nodeid]);
3173 if (client[setno][node->nd_nodeid] != (CLIENT *)NULL) {
3174 client[setno][node->nd_nodeid] = (CLIENT *)NULL;
3177 md_mn_set_inited[setno] &= ~MDMN_SET_NODES;
3180 commd_debug(MD_MMV_MISC, "reinit: done init_set(%d)\n", setno);
3182 (void) rw_unlock(&client_rwlock[setno]);
3183 (void) rw_unlock(&set_desc_rwlock[setno]);