From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28634 invoked by alias); 22 Jun 2009 13:49:10 -0000 Received: (qmail 28628 invoked by alias); 22 Jun 2009 13:49:09 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_63,SPF_HELO_PASS X-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_63,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: cluster: STABLE3 - rgmanager: groups.c cleanup To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/STABLE3 X-Git-Reftype: branch X-Git-Oldrev: 6882ec2bf4c4ef9f907595c438810865b0297ac7 X-Git-Newrev: 00b0a7e4088e765f81f234eb4d16be099a5eb839 From: Lon Hohberger Message-Id: <20090622133303.076891201D4@lists.fedorahosted.org> Date: Mon, 22 Jun 2009 13:49:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q2/txt/msg00614.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=00b0a7e4088e765f81f234eb4d16be099a5eb839 Commit: 00b0a7e4088e765f81f234eb4d16be099a5eb839 Parent: 6882ec2bf4c4ef9f907595c438810865b0297ac7 Author: Lon Hohberger AuthorDate: Tue Jun 16 13:20:51 2009 -0400 Committer: Lon Hohberger CommitterDate: Mon Jun 22 09:32:03 2009 -0400 rgmanager: groups.c cleanup Fixes complier warnings in groups.c and associated files which wrongly had prototypes for functions contained within groups.c. Signed-off-by: Lon Hohberger --- rgmanager/include/fo_domain.h | 4 +- rgmanager/include/groups.h | 42 ++++++++++++++++ rgmanager/include/resgroup.h | 22 +++------ rgmanager/include/reslist.h | 19 ++++--- rgmanager/include/restart_counter.h | 2 +- rgmanager/src/daemons/fo_domain.c | 4 +- rgmanager/src/daemons/groups.c | 89 ++++++++++++++++++----------------- rgmanager/src/daemons/reslist.c | 4 +- rgmanager/src/daemons/rg_event.c | 3 - rgmanager/src/daemons/rg_state.c | 23 ++------- 10 files changed, 117 insertions(+), 95 deletions(-) diff --git a/rgmanager/include/fo_domain.h b/rgmanager/include/fo_domain.h index bc2b1b1..2cc654b 100644 --- a/rgmanager/include/fo_domain.h +++ b/rgmanager/include/fo_domain.h @@ -40,9 +40,9 @@ int construct_domains(int ccsfd, fod_t **domains); void deconstruct_domains(fod_t **domains); void print_domains(fod_t **domains); int node_should_start(int nodeid, cluster_member_list_t *membership, - char *rg_name, fod_t **domains); + const char *rg_name, fod_t **domains); int node_domain_set(fod_t **domains, char *name, int **ret, int *retlen, int *flags); int node_domain_set_safe(char *domainname, int **ret, int *retlen, int *flags); - + #endif diff --git a/rgmanager/include/groups.h b/rgmanager/include/groups.h new file mode 100644 index 0000000..4f23540 --- /dev/null +++ b/rgmanager/include/groups.h @@ -0,0 +1,42 @@ +#ifndef _GROUPS_H +#define _GROUPS_H + +int node_should_start_safe(uint32_t, cluster_member_list_t *, const char *); +int group_property(const char *groupname, const char *property, + char *ret_val, size_t len); +int count_resource_groups(cluster_member_list_t *ml); +int count_resource_groups_local(cman_node_t *mp); +int is_exclusive(const char *svcName); +int have_exclusive_resources(void); +int check_exclusive_resources(cluster_member_list_t *membership, + const char *svcName); +int check_depend(resource_t *res); + +void dump_config_version(FILE *fp); +int init_resource_groups(int reconfigure, int do_init); +void get_recovery_policy(const char *rg_name, char *buf, size_t buflen); +int get_service_property(const char *rg_name, const char *prop, + char *buf, size_t buflen); + +int add_restart(const char *rg_name); +int check_restart(const char *rg_name); +void kill_resource_groups(void); + +/* do this op on all resource groups. The handler for the request + will sort out whether or not it's a valid request given the state */ +void rg_doall(int request, int block, const char *debugfmt); +void do_status_checks(void); /* Queue status checks for locally running + services */ + +int svc_exists(const char *svcname); +int send_rg_states(msgctx_t *ctx, int fast); + +int check_depend_safe(const char *servicename); +int group_migratory(const char *servicename, int lock); +int group_event(const char *rg_name, uint32_t state, int owner); + +char **get_service_names(int *len); + + + +#endif diff --git a/rgmanager/include/resgroup.h b/rgmanager/include/resgroup.h index 1adcdc8..99eed3e 100644 --- a/rgmanager/include/resgroup.h +++ b/rgmanager/include/resgroup.h @@ -161,8 +161,6 @@ int svc_fail(char *svcName); int svc_freeze(char *svcName); int svc_unfreeze(char *svcName); int svc_migrate(char *svcName, int target); -int check_restart(char *svcName); -int add_restart(char *svcName); int rt_enqueue_request(const char *resgroupname, int request, msgctx_t *resp_ctx, @@ -172,28 +170,22 @@ void send_response(int ret, int node, request_t *req); void send_ret(msgctx_t *ctx, char *name, int ret, int orig_request, int new_owner); -/* do this op on all resource groups. The handler for the request - will sort out whether or not it's a valid request given the state */ -void rg_doall(int request, int block, char *debugfmt); -void do_status_checks(void); /* Queue status checks for locally running - services */ - /* from rg_state.c */ -int set_rg_state(char *name, rg_state_t *svcblk); -int get_rg_state(char *servicename, rg_state_t *svcblk); -int get_rg_state_local(char *servicename, rg_state_t *svcblk); +int set_rg_state(const char *name, rg_state_t *svcblk); +int get_rg_state(const char *servicename, rg_state_t *svcblk); +int get_rg_state_local(const char *servicename, rg_state_t *svcblk); uint32_t best_target_node(cluster_member_list_t *allowed, uint32_t owner, - char *rg_name, int lock); + const char *rg_name, int lock); #ifdef DEBUG -int _rg_lock_dbg(char *, struct dlm_lksb *, char *, int); +int _rg_lock_dbg(const char *, struct dlm_lksb *, const char *, int); #define rg_lock(name, p) _rg_lock_dbg(name, p, __FILE__, __LINE__) -int _rg_unlock_dbg(struct dlm_lksb *, char *, int); +int _rg_unlock_dbg(struct dlm_lksb *, const char *, int); #define rg_unlock(p) _rg_unlock_dbg(p, __FILE__, __LINE__) #else -int rg_lock(char *name, struct dlm_lksb *p); +int rg_lock(const char *name, struct dlm_lksb *p); int rg_unlock(struct dlm_lksb *p); #endif diff --git a/rgmanager/include/reslist.h b/rgmanager/include/reslist.h index 564f93d..1e5f2b2 100644 --- a/rgmanager/include/reslist.h +++ b/rgmanager/include/reslist.h @@ -167,15 +167,18 @@ void destroy_resource_tree(resource_node_t **tree); /* Handy functions */ -resource_t *find_resource_by_ref(resource_t **reslist, char *type, char *ref); -resource_t *find_root_by_ref(resource_t **reslist, char *ref); -resource_rule_t *find_rule_by_type(resource_rule_t **rulelist, char *type); +resource_t *find_resource_by_ref(resource_t **reslist, const char *type, + const char *ref); +resource_t *find_root_by_ref(resource_t **reslist, const char *ref); +resource_rule_t *find_rule_by_type(resource_rule_t **rulelist, + const char *type); void res_build_name(char *, size_t, resource_t *); /* Internal functions; shouldn't be needed. */ -char *xpath_get_one(xmlDocPtr doc, xmlXPathContextPtr ctx, char *query); +const char *xpath_get_one(xmlDocPtr doc, xmlXPathContextPtr ctx, + const char *query); int store_attribute(resource_attr_t **attrsp, char *name, char *value, int flags); @@ -183,10 +186,10 @@ resource_t *load_resource(int ccsfd, resource_rule_t *rule, char *base); int store_resource(resource_t **reslist, resource_t *newres); void destroy_resource(resource_t *res); -char *attr_value(resource_node_t *node, char *attrname); -char *rg_attr_value(resource_node_t *node, char *attrname); -char *res_attr_value(resource_t *res, char *attrname); -char *primary_attr_value(resource_t *); +const char *attr_value(resource_node_t *node, const char *attrname); +const char *rg_attr_value(resource_node_t *node, const char *attrname); +const char *res_attr_value(resource_t *res, const char *attrname); +const char *primary_attr_value(resource_t *); int rescmp(resource_t *l, resource_t *r); #ifdef NO_CCS diff --git a/rgmanager/include/restart_counter.h b/rgmanager/include/restart_counter.h index 04714e4..d003584 100644 --- a/rgmanager/include/restart_counter.h +++ b/rgmanager/include/restart_counter.h @@ -8,7 +8,7 @@ typedef void *restart_counter_t; int restart_add(restart_counter_t arg); int restart_clear(restart_counter_t arg); int restart_count(restart_counter_t arg); -int restart_treshold_exceeded(restart_counter_t arg); +int restart_threshold_exceeded(restart_counter_t arg); restart_counter_t restart_init(time_t expire_timeout, int max_restarts); int restart_cleanup(restart_counter_t arg); diff --git a/rgmanager/src/daemons/fo_domain.c b/rgmanager/src/daemons/fo_domain.c index 666d187..08590d2 100644 --- a/rgmanager/src/daemons/fo_domain.c +++ b/rgmanager/src/daemons/fo_domain.c @@ -18,6 +18,7 @@ #include #include #include +#include //#define DEBUG @@ -35,7 +36,6 @@ */ -int group_property(char *, char *, char *, size_t); static fod_node_t * #ifndef NO_CCS @@ -411,7 +411,7 @@ node_domain_set(fod_t **domains, char *name, int **ret, int *retlen, int *flags) */ int node_should_start(int nodeid, cluster_member_list_t *membership, - char *rg_name, fod_t **domains) + const char *rg_name, fod_t **domains) { char *nodename = NULL; char domainname[128]; diff --git a/rgmanager/src/daemons/groups.c b/rgmanager/src/daemons/groups.c index 4e901a6..a0b7159 100644 --- a/rgmanager/src/daemons/groups.c +++ b/rgmanager/src/daemons/groups.c @@ -14,6 +14,7 @@ #include #include #include +#include /* Use address field in this because we never use it internally, and there is no extra space in the cman_node_t type. @@ -40,11 +41,8 @@ pthread_mutex_t status_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_rwlock_t resource_lock = PTHREAD_RWLOCK_INITIALIZER; void res_build_name(char *, size_t, resource_t *); -int get_rg_state_local(char *, rg_state_t *); -int group_migratory(char *groupname, int lock); -int _group_property(char *groupname, char *property, char *ret, size_t len); -int restart_threshold_exceeded(restart_counter_t arg); - +static int _group_property(const char *groupname, const char *property, + char *ret, size_t len); struct status_arg { msgctx_t *ctx; @@ -59,7 +57,7 @@ struct status_arg { */ int node_should_start_safe(uint32_t nodeid, cluster_member_list_t *membership, - char *rg_name) + const char *rg_name) { int ret; @@ -133,7 +131,7 @@ count_resource_groups(cluster_member_list_t *ml) ++mp->cn_svccount; - val = res_attr_value(res, "exclusive"); + val = (char *)res_attr_value(res, "exclusive"); if (val && ((!strcmp(val, "yes") || (atoi(val)>0))) ) { ++mp->cn_svcexcl; @@ -149,7 +147,7 @@ count_resource_groups(cluster_member_list_t *ml) static inline int is_exclusive_res(resource_t *res) { - char *val; + const char *val; val = res_attr_value(res, "exclusive"); if (val && ((!strcmp(val, "yes") || @@ -162,7 +160,7 @@ is_exclusive_res(resource_t *res) /* Locked exported function */ int -is_exclusive(char *svcName) +is_exclusive(const char *svcName) { int ret = 0; resource_t *res = NULL; @@ -180,8 +178,8 @@ is_exclusive(char *svcName) } -resource_node_t * -node_by_ref(resource_node_t **tree, char *name) +static resource_node_t * +node_by_ref(resource_node_t **tree, const char *name) { resource_t *res; resource_node_t *node, *ret = NULL; @@ -267,7 +265,8 @@ have_exclusive_resources(void) int -check_exclusive_resources(cluster_member_list_t *membership, char *svcName) +check_exclusive_resources(cluster_member_list_t *membership, + const char *svcName) { cman_node_t *mp; int exclusive, count, excl; @@ -303,7 +302,7 @@ check_exclusive_resources(cluster_member_list_t *membership, char *svcName) */ uint32_t best_target_node(cluster_member_list_t *allowed, uint32_t owner, - char *rg_name, int lock) + const char *rg_name, int lock) { int x; int highscore = 1; @@ -343,7 +342,7 @@ best_target_node(cluster_member_list_t *allowed, uint32_t owner, it's an exclusive service and the target node already is running a service. */ res = find_root_by_ref(&_resources, rg_name); - val = res_attr_value(res, "exclusive"); + val = (char *)res_attr_value(res, "exclusive"); exclusive = val && ((!strcmp(val, "yes") || (atoi(val)>0))); if (lock) @@ -377,7 +376,7 @@ best_target_node(cluster_member_list_t *allowed, uint32_t owner, int check_depend(resource_t *res) { - char *val; + const char *val; rg_state_t rs; val = res_attr_value(res, "depend"); @@ -393,7 +392,7 @@ check_depend(resource_t *res) int -check_depend_safe(char *rg_name) +check_depend_safe(const char *rg_name) { resource_t *res; int ret; @@ -410,8 +409,8 @@ check_depend_safe(char *rg_name) } -int -check_rdomain_crash(char *svcName) +static int +check_rdomain_crash(const char *svcName) { int *nodes = NULL, nodecount = 0; int *fd_nodes = NULL, fd_nodecount = 0, fl = 0; @@ -458,7 +457,7 @@ out_free: If it is running and we're a better member to run it, then ask for it. */ -void +static void consider_start(resource_node_t *node, char *svcName, rg_state_t *svcStatus, cluster_member_list_t *membership) { @@ -489,7 +488,7 @@ consider_start(resource_node_t *node, char *svcName, rg_state_t *svcStatus, autostart is disabled. If it is, leave it stopped */ if (svcStatus->rs_state == RG_STATE_STOPPED && svcStatus->rs_transition == 0) { - val = res_attr_value(node->rn_resource, "autostart"); + val = (char *)res_attr_value(node->rn_resource, "autostart"); autostart = !(val && ((!strcmp(val, "no") || (atoi(val)==0)))); if (!autostart) { @@ -536,7 +535,7 @@ consider_start(resource_node_t *node, char *svcName, rg_state_t *svcStatus, return; } - val = res_attr_value(node->rn_resource, "exclusive"); + val = (char *)res_attr_value(node->rn_resource, "exclusive"); exclusive = val && ((!strcmp(val, "yes") || (atoi(val)>0))); if (exclusive && mp->cn_svccount) { @@ -571,8 +570,8 @@ consider_start(resource_node_t *node, char *svcName, rg_state_t *svcStatus, } -void -consider_relocate(char *svcName, rg_state_t *svcStatus, uint32_t nodeid, +static void +consider_relocate(const char *svcName, rg_state_t *svcStatus, uint32_t nodeid, cluster_member_list_t *membership) { int a, b, req = RG_RELOCATE; @@ -727,7 +726,7 @@ eval_groups(int local, uint32_t nodeid, int nodeStatus) rg_unlock(&lockp); if (svcStatus.rs_owner == 0) - nodeName = "none"; + nodeName = (char *)"none"; else nodeName = memb_id_to_name(membership, svcStatus.rs_owner); @@ -787,7 +786,7 @@ eval_groups(int local, uint32_t nodeid, int nodeStatus) * @see eval_groups */ int -group_event(char __attribute__ ((unused)) *rg_name, +group_event(const char __attribute__ ((unused)) *rg_name, uint32_t state, int __attribute__ ((unused)) owner) { @@ -820,7 +819,7 @@ group_event(char __attribute__ ((unused)) *rg_name, continue; if (svcStatus.rs_owner == 0) - nodeName = "none"; + nodeName = (char *)"none"; else nodeName = memb_id_to_name(membership, svcStatus.rs_owner); @@ -885,7 +884,7 @@ group_event(char __attribute__ ((unused)) *rg_name, Tells us if a resource group can be migrated. */ int -group_migratory(char *groupname, int lock) +group_migratory(const char *groupname, int lock) { resource_node_t *rn; resource_t *res; @@ -1086,8 +1085,9 @@ out: @param len Length of buffer pointed to by ret @return 0 on success, -1 on failure. */ -int -_group_property(char *groupname, char *property, char *ret, size_t len) +static int +_group_property(const char *groupname, const char *property, + char *ret, size_t len) { resource_t *res = NULL; int x = 0; @@ -1109,7 +1109,8 @@ _group_property(char *groupname, char *property, char *ret, size_t len) int -group_property(char *groupname, char *property, char *ret_val, size_t len) +group_property(const char *groupname, const char *property, + char *ret_val, size_t len) { int ret = -1; pthread_rwlock_rdlock(&resource_lock); @@ -1126,7 +1127,7 @@ group_property(char *groupname, char *property, char *ret_val, size_t len) @param rgname Resource group name whose state we want to send. @see send_rg_states */ -void +static void send_rg_state(msgctx_t *ctx, char *rgname, int fast) { rg_state_msg_t msg, *msgp = &msg; @@ -1249,7 +1250,7 @@ send_rg_states(msgctx_t *ctx, int fast) int -svc_exists(char *svcname) +svc_exists(const char *svcname) { resource_node_t *node; int ret = 0; @@ -1273,7 +1274,8 @@ svc_exists(char *svcname) void -rg_doall(int request, int block, char __attribute__ ((unused)) *debugfmt) +rg_doall(int request, int block, + const char __attribute__ ((unused)) *debugfmt) { resource_node_t *curr; rg_state_t svcblk; @@ -1317,7 +1319,7 @@ rg_doall(int request, int block, char __attribute__ ((unused)) *debugfmt) /** Stop changed resources. */ -void * +static void * q_status_checks(void __attribute__ ((unused)) *arg) { resource_node_t *curr; @@ -1382,7 +1384,7 @@ do_status_checks(void) /** Stop changed resources. */ -void +static void do_condstops(void) { resource_node_t *curr; @@ -1445,7 +1447,7 @@ cont: /** Start changed resources. */ -void +static void do_condstarts(void) { resource_node_t *curr; @@ -1543,7 +1545,7 @@ do_condstarts(void) } /* Set it up for an auto-start */ - val = res_attr_value(curr->rn_resource, "autostart"); + val = (char *)res_attr_value(curr->rn_resource, "autostart"); autostart = !(val && ((!strcmp(val, "no") || (atoi(val)==0)))); if (autostart) @@ -1730,10 +1732,10 @@ init_resource_groups(int reconfigure, int do_init) void -get_recovery_policy(char *rg_name, char *buf, size_t buflen) +get_recovery_policy(const char *rg_name, char *buf, size_t buflen) { resource_t *res; - char *val; + const char *val; pthread_rwlock_rdlock(&resource_lock); @@ -1751,11 +1753,12 @@ get_recovery_policy(char *rg_name, char *buf, size_t buflen) int -get_service_property(char *rg_name, char *prop, char *buf, size_t buflen) +get_service_property(const char *rg_name, const char *prop, + char *buf, size_t buflen) { int ret = 0; resource_t *res; - char *val; + const char *val; memset(buf, 0, buflen); @@ -1805,7 +1808,7 @@ get_service_property(char *rg_name, char *prop, char *buf, size_t buflen) int -add_restart(char *rg_name) +add_restart(const char *rg_name) { resource_node_t *node; int ret = 1; @@ -1822,7 +1825,7 @@ add_restart(char *rg_name) int -check_restart(char *rg_name) +check_restart(const char *rg_name) { resource_node_t *node; int ret = 0; diff --git a/rgmanager/src/daemons/reslist.c b/rgmanager/src/daemons/reslist.c index b327245..1a1f0dc 100644 --- a/rgmanager/src/daemons/reslist.c +++ b/rgmanager/src/daemons/reslist.c @@ -35,7 +35,7 @@ res_build_name(char *buf, size_t buflen, resource_t *res) @return value of attribute or NULL if not found */ char * -res_attr_value(resource_t *res, char *attrname) +res_attr_value(resource_t *res, const char *attrname) { resource_attr_t *ra; int x; @@ -295,7 +295,7 @@ find_resource_by_ref(resource_t **reslist, char *type, char *ref) @return Resource matching type/ref or NULL if none. */ resource_t * -find_root_by_ref(resource_t **reslist, char *ref) +find_root_by_ref(resource_t **reslist, const char *ref) { resource_t *curr; char ref_buf[128]; diff --git a/rgmanager/src/daemons/rg_event.c b/rgmanager/src/daemons/rg_event.c index 1c1f195..08404c6 100644 --- a/rgmanager/src/daemons/rg_event.c +++ b/rgmanager/src/daemons/rg_event.c @@ -343,9 +343,6 @@ out: } - -void group_event(char *name, uint32_t state, int owner); - /** Event handling function. This only stays around as long as events are on the queue. diff --git a/rgmanager/src/daemons/rg_state.c b/rgmanager/src/daemons/rg_state.c index 9e13e21..3e8c97b 100644 --- a/rgmanager/src/daemons/rg_state.c +++ b/rgmanager/src/daemons/rg_state.c @@ -19,30 +19,15 @@ #include #include #include +#include /* XXX - copied :( */ #define cn_svccount cn_address.cna_address[0] /* Theses are uint8_t size */ #define cn_svcexcl cn_address.cna_address[1] -int node_should_start_safe(uint32_t, cluster_member_list_t *, char *); - -int next_node_id(cluster_member_list_t *membership, int me); - -int rg_exec_script(char *rgname, char *script, char *action); -static int _svc_stop_finish(char *svcName, int failed, uint32_t newstate); - -int set_rg_state(char *servicename, rg_state_t *svcblk); -int get_rg_state(char *servicename, rg_state_t *svcblk); -void get_recovery_policy(char *rg_name, char *buf, size_t buflen); -int check_depend_safe(char *servicename); -int group_migratory(char *servicename, int lock); -int have_exclusive_resources(void); -int check_exclusive_resources(cluster_member_list_t *membership, char *svcName); static int msvc_check_cluster(char *svcName); static inline int handle_started_status(char *svcName, int ret, rg_state_t *svcStatus); static inline int handle_migrate_status(char *svcName, int ret, rg_state_t *svcStatus); -int count_resource_groups_local(cman_node_t *mp); -int is_exclusive(char *svcName); int @@ -156,9 +141,9 @@ svc_report_failure(char *svcName) int #ifdef DEBUG -_rg_lock(char *name, struct dlm_lksb *p) +_rg_lock(const char *name, struct dlm_lksb *p) #else -rg_lock(char *name, struct dlm_lksb *p) +rg_lock(const char *name, struct dlm_lksb *p) #endif { char res[256]; @@ -170,7 +155,7 @@ rg_lock(char *name, struct dlm_lksb *p) #ifdef DEBUG int -_rg_lock_dbg(char *name, struct dlm_lksb *p, char *file, int line) +_rg_lock_dbg(const char *name, struct dlm_lksb *p, const char *file, int line) { dbg_printf("rg_lock(%s) @ %s:%d\n", name, file, line); return _rg_lock(name, p);