• Home
  • Raw
  • Download

Lines Matching +full:cm +full:- +full:name

1 // SPDX-License-Identifier: GPL-2.0-only
5 ** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
6 ** Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
114 return sprintf(buf, "%s\n", cl->cl_cluster_name); in cluster_cluster_name_show()
124 strlcpy(cl->cl_cluster_name, buf, sizeof(cl->cl_cluster_name)); in cluster_cluster_name_store()
138 return -EPERM; in cluster_set()
155 #define CLUSTER_ATTR(name, check_cb) \ argument
156 static ssize_t cluster_##name##_store(struct config_item *item, \
160 return cluster_set(cl, &cl->cl_##name, &dlm_config.ci_##name, \
163 static ssize_t cluster_##name##_show(struct config_item *item, char *buf) \
166 return snprintf(buf, PAGE_SIZE, "%u\n", cl->cl_##name); \
168 CONFIGFS_ATTR(cluster_, name);
173 return -EINVAL; in dlm_check_zero()
181 return -EINVAL; in dlm_check_buffer_size()
269 struct list_head list; /* space->members */
273 int comm_seq; /* copy of cm->seq when nd->nodeid is set */
372 const char *name) in make_cluster() argument
385 cl->sps = sps; in make_cluster()
386 cl->cms = cms; in make_cluster()
388 config_group_init_type_name(&cl->group, name, &cluster_type); in make_cluster()
389 config_group_init_type_name(&sps->ss_group, "spaces", &spaces_type); in make_cluster()
390 config_group_init_type_name(&cms->cs_group, "comms", &comms_type); in make_cluster()
392 configfs_add_default_group(&sps->ss_group, &cl->group); in make_cluster()
393 configfs_add_default_group(&cms->cs_group, &cl->group); in make_cluster()
395 cl->cl_tcp_port = dlm_config.ci_tcp_port; in make_cluster()
396 cl->cl_buffer_size = dlm_config.ci_buffer_size; in make_cluster()
397 cl->cl_rsbtbl_size = dlm_config.ci_rsbtbl_size; in make_cluster()
398 cl->cl_recover_timer = dlm_config.ci_recover_timer; in make_cluster()
399 cl->cl_toss_secs = dlm_config.ci_toss_secs; in make_cluster()
400 cl->cl_scan_secs = dlm_config.ci_scan_secs; in make_cluster()
401 cl->cl_log_debug = dlm_config.ci_log_debug; in make_cluster()
402 cl->cl_log_info = dlm_config.ci_log_info; in make_cluster()
403 cl->cl_protocol = dlm_config.ci_protocol; in make_cluster()
404 cl->cl_timewarn_cs = dlm_config.ci_timewarn_cs; in make_cluster()
405 cl->cl_waitwarn_us = dlm_config.ci_waitwarn_us; in make_cluster()
406 cl->cl_new_rsb_count = dlm_config.ci_new_rsb_count; in make_cluster()
407 cl->cl_recover_callbacks = dlm_config.ci_recover_callbacks; in make_cluster()
408 memcpy(cl->cl_cluster_name, dlm_config.ci_cluster_name, in make_cluster()
411 space_list = &sps->ss_group; in make_cluster()
412 comm_list = &cms->cs_group; in make_cluster()
413 return &cl->group; in make_cluster()
419 return ERR_PTR(-ENOMEM); in make_cluster()
426 configfs_remove_default_groups(&cl->group); in drop_cluster()
438 kfree(cl->sps); in release_cluster()
439 kfree(cl->cms); in release_cluster()
443 static struct config_group *make_space(struct config_group *g, const char *name) in make_space() argument
454 config_group_init_type_name(&sp->group, name, &space_type); in make_space()
456 config_group_init_type_name(&nds->ns_group, "nodes", &nodes_type); in make_space()
457 configfs_add_default_group(&nds->ns_group, &sp->group); in make_space()
459 INIT_LIST_HEAD(&sp->members); in make_space()
460 mutex_init(&sp->members_lock); in make_space()
461 sp->members_count = 0; in make_space()
462 sp->nds = nds; in make_space()
463 return &sp->group; in make_space()
468 return ERR_PTR(-ENOMEM); in make_space()
475 /* assert list_empty(&sp->members) */ in drop_space()
477 configfs_remove_default_groups(&sp->group); in drop_space()
484 kfree(sp->nds); in release_space()
488 static struct config_item *make_comm(struct config_group *g, const char *name) in make_comm() argument
490 struct dlm_comm *cm; in make_comm() local
492 cm = kzalloc(sizeof(struct dlm_comm), GFP_NOFS); in make_comm()
493 if (!cm) in make_comm()
494 return ERR_PTR(-ENOMEM); in make_comm()
496 config_item_init_type_name(&cm->item, name, &comm_type); in make_comm()
498 cm->seq = dlm_comm_count++; in make_comm()
499 if (!cm->seq) in make_comm()
500 cm->seq = dlm_comm_count++; in make_comm()
502 cm->nodeid = -1; in make_comm()
503 cm->local = 0; in make_comm()
504 cm->addr_count = 0; in make_comm()
505 cm->mark = 0; in make_comm()
506 return &cm->item; in make_comm()
511 struct dlm_comm *cm = config_item_to_comm(i); in drop_comm() local
512 if (local_comm == cm) in drop_comm()
514 dlm_lowcomms_close(cm->nodeid); in drop_comm()
515 while (cm->addr_count--) in drop_comm()
516 kfree(cm->addr[cm->addr_count]); in drop_comm()
522 struct dlm_comm *cm = config_item_to_comm(i); in release_comm() local
523 kfree(cm); in release_comm()
526 static struct config_item *make_node(struct config_group *g, const char *name) in make_node() argument
528 struct dlm_space *sp = config_item_to_space(g->cg_item.ci_parent); in make_node()
533 return ERR_PTR(-ENOMEM); in make_node()
535 config_item_init_type_name(&nd->item, name, &node_type); in make_node()
536 nd->nodeid = -1; in make_node()
537 nd->weight = 1; /* default weight of 1 if none is set */ in make_node()
538 nd->new = 1; /* set to 0 once it's been read by dlm_nodeid_list() */ in make_node()
540 mutex_lock(&sp->members_lock); in make_node()
541 list_add(&nd->list, &sp->members); in make_node()
542 sp->members_count++; in make_node()
543 mutex_unlock(&sp->members_lock); in make_node()
545 return &nd->item; in make_node()
550 struct dlm_space *sp = config_item_to_space(g->cg_item.ci_parent); in drop_node()
553 mutex_lock(&sp->members_lock); in drop_node()
554 list_del(&nd->list); in drop_node()
555 sp->members_count--; in drop_node()
556 mutex_unlock(&sp->members_lock); in drop_node()
596 return sprintf(buf, "%d\n", config_item_to_comm(item)->nodeid); in comm_nodeid_show()
602 int rc = kstrtoint(buf, 0, &config_item_to_comm(item)->nodeid); in comm_nodeid_store()
611 return sprintf(buf, "%d\n", config_item_to_comm(item)->local); in comm_local_show()
617 struct dlm_comm *cm = config_item_to_comm(item); in comm_local_store() local
618 int rc = kstrtoint(buf, 0, &cm->local); in comm_local_store()
622 if (cm->local && !local_comm) in comm_local_store()
623 local_comm = cm; in comm_local_store()
630 struct dlm_comm *cm = config_item_to_comm(item); in comm_addr_store() local
635 return -EINVAL; in comm_addr_store()
637 if (cm->addr_count >= DLM_MAX_ADDR_COUNT) in comm_addr_store()
638 return -ENOSPC; in comm_addr_store()
642 return -ENOMEM; in comm_addr_store()
646 rv = dlm_lowcomms_addr(cm->nodeid, addr, len); in comm_addr_store()
652 cm->addr[cm->addr_count++] = addr; in comm_addr_store()
658 struct dlm_comm *cm = config_item_to_comm(item); in comm_addr_list_show() local
674 for (i = 0; i < cm->addr_count; i++) { in comm_addr_list_show()
675 addr = cm->addr[i]; in comm_addr_list_show()
677 switch(addr->ss_family) { in comm_addr_list_show()
680 s = sprintf(buf0, "AF_INET %pI4\n", &addr_in->sin_addr.s_addr); in comm_addr_list_show()
684 s = sprintf(buf0, "AF_INET6 %pI6\n", &addr_in6->sin6_addr); in comm_addr_list_show()
690 allowance -= s; in comm_addr_list_show()
698 return 4096 - allowance; in comm_addr_list_show()
703 return sprintf(buf, "%u\n", config_item_to_comm(item)->mark); in comm_mark_show()
716 config_item_to_comm(item)->mark = mark; in comm_mark_store()
737 return sprintf(buf, "%d\n", config_item_to_node(item)->nodeid); in node_nodeid_show()
745 int rc = kstrtoint(buf, 0, &nd->nodeid); in node_nodeid_store()
749 dlm_comm_seq(nd->nodeid, &seq); in node_nodeid_store()
750 nd->comm_seq = seq; in node_nodeid_store()
756 return sprintf(buf, "%d\n", config_item_to_node(item)->weight); in node_weight_show()
762 int rc = kstrtoint(buf, 0, &config_item_to_node(item)->weight); in node_weight_store()
782 static struct dlm_space *get_space(char *name) in get_space() argument
789 mutex_lock(&space_list->cg_subsys->su_mutex); in get_space()
790 i = config_group_find_item(space_list, name); in get_space()
791 mutex_unlock(&space_list->cg_subsys->su_mutex); in get_space()
798 config_item_put(&sp->group.cg_item); in put_space()
804 struct dlm_comm *cm = NULL; in get_comm() local
812 list_for_each_entry(i, &comm_list->cg_children, ci_entry) { in get_comm()
813 cm = config_item_to_comm(i); in get_comm()
815 if (cm->nodeid != nodeid) in get_comm()
824 cm = NULL; in get_comm()
825 return cm; in get_comm()
828 static void put_comm(struct dlm_comm *cm) in put_comm() argument
830 config_item_put(&cm->item); in put_comm()
844 return -EEXIST; in dlm_config_nodes()
846 mutex_lock(&sp->members_lock); in dlm_config_nodes()
847 if (!sp->members_count) { in dlm_config_nodes()
848 rv = -EINVAL; in dlm_config_nodes()
853 count = sp->members_count; in dlm_config_nodes()
857 rv = -ENOMEM; in dlm_config_nodes()
862 list_for_each_entry(nd, &sp->members, list) { in dlm_config_nodes()
863 node->nodeid = nd->nodeid; in dlm_config_nodes()
864 node->weight = nd->weight; in dlm_config_nodes()
865 node->new = nd->new; in dlm_config_nodes()
866 node->comm_seq = nd->comm_seq; in dlm_config_nodes()
869 nd->new = 0; in dlm_config_nodes()
876 mutex_unlock(&sp->members_lock); in dlm_config_nodes()
883 struct dlm_comm *cm = get_comm(nodeid); in dlm_comm_seq() local
884 if (!cm) in dlm_comm_seq()
885 return -EEXIST; in dlm_comm_seq()
886 *seq = cm->seq; in dlm_comm_seq()
887 put_comm(cm); in dlm_comm_seq()
893 struct dlm_comm *cm; in dlm_comm_mark() local
895 cm = get_comm(nodeid); in dlm_comm_mark()
896 if (!cm) { in dlm_comm_mark()
901 if (cm->mark) in dlm_comm_mark()
902 *mark = cm->mark; in dlm_comm_mark()
906 put_comm(cm); in dlm_comm_mark()
911 return local_comm ? local_comm->nodeid : 0; in dlm_our_nodeid()
918 return -1; in dlm_our_addr()
919 if (num + 1 > local_comm->addr_count) in dlm_our_addr()
920 return -1; in dlm_our_addr()
921 memcpy(addr, local_comm->addr[num], sizeof(*addr)); in dlm_our_addr()