Reviewed-by: Steven Dake <sdake@xxxxxxxxxx> so version for votequorum lib needs to change too... Regards -steve On 01/12/2012 04:50 AM, Fabio M. Di Nitto wrote: > From: "Fabio M. Di Nitto" <fdinitto@xxxxxxxxxx> > > this was a compatibility function for cman_tool only. > > Signed-off-by: Fabio M. Di Nitto <fdinitto@xxxxxxxxxx> > --- > :100644 100644 e17aeb6... 448edc3... M include/corosync/ipc_votequorum.h > :100644 100644 8e1cb84... 45ffddc... M include/corosync/votequorum.h > :100644 100644 1746845... c18a64a... M lib/libvotequorum.versions > :100644 100644 240ada2... 21468fe... M lib/votequorum.c > :100644 100644 fe4ea6b... 5b75297... M man/Makefile.am > :100644 100644 2ee5473... 4c779ec... M man/index.html > :100644 000000 ad7bda4... 0000000... D man/votequorum_leaving.3 > :100644 100644 6ab64fc... a27f07d... M services/votequorum.c > include/corosync/ipc_votequorum.h | 1 - > include/corosync/votequorum.h | 6 --- > lib/libvotequorum.versions | 1 - > lib/votequorum.c | 40 --------------------- > man/Makefile.am | 1 - > man/index.html | 4 -- > man/votequorum_leaving.3 | 67 ----------------------------------- > services/votequorum.c | 69 +------------------------------------ > 8 files changed, 1 insertions(+), 188 deletions(-) > > diff --git a/include/corosync/ipc_votequorum.h b/include/corosync/ipc_votequorum.h > index e17aeb6..448edc3 100644 > --- a/include/corosync/ipc_votequorum.h > +++ b/include/corosync/ipc_votequorum.h > @@ -47,7 +47,6 @@ enum req_votequorum_types { > MESSAGE_REQ_VOTEQUORUM_QDISK_UNREGISTER, > MESSAGE_REQ_VOTEQUORUM_QDISK_POLL, > MESSAGE_REQ_VOTEQUORUM_QDISK_GETINFO, > - MESSAGE_REQ_VOTEQUORUM_LEAVING, > MESSAGE_REQ_VOTEQUORUM_TRACKSTART, > MESSAGE_REQ_VOTEQUORUM_TRACKSTOP > }; > diff --git a/include/corosync/votequorum.h b/include/corosync/votequorum.h > index 8e1cb84..45ffddc 100644 > --- a/include/corosync/votequorum.h > +++ b/include/corosync/votequorum.h > @@ -195,12 +195,6 @@ cs_error_t votequorum_trackstop ( > votequorum_handle_t handle); > > /** > - * Set our LEAVING flag. we should exit soon after this > - */ > -cs_error_t votequorum_leaving ( > - votequorum_handle_t handle); > - > -/** > * Save and retrieve private data/context > */ > cs_error_t votequorum_context_get ( > diff --git a/lib/libvotequorum.versions b/lib/libvotequorum.versions > index 1746845..c18a64a 100644 > --- a/lib/libvotequorum.versions > +++ b/lib/libvotequorum.versions > @@ -11,7 +11,6 @@ COROSYNC_VOTEQUORUM_1.0 { > votequorum_qdisk_unregister; > votequorum_qdisk_poll; > votequorum_qdisk_getinfo; > - votequorum_leaving; > votequorum_trackstart; > votequorum_trackstop; > votequorum_context_get; > diff --git a/lib/votequorum.c b/lib/votequorum.c > index 240ada2..21468fe 100644 > --- a/lib/votequorum.c > +++ b/lib/votequorum.c > @@ -448,46 +448,6 @@ error_exit: > return (error); > } > > -cs_error_t votequorum_leaving ( > - votequorum_handle_t handle) > -{ > - cs_error_t error; > - struct votequorum_inst *votequorum_inst; > - struct iovec iov; > - struct req_lib_votequorum_general req_lib_votequorum_general; > - struct res_lib_votequorum_status res_lib_votequorum_status; > - > - error = hdb_error_to_cs(hdb_handle_get (&votequorum_handle_t_db, handle, (void *)&votequorum_inst)); > - if (error != CS_OK) { > - return (error); > - } > - > - > - req_lib_votequorum_general.header.size = sizeof (struct req_lib_votequorum_general); > - req_lib_votequorum_general.header.id = MESSAGE_REQ_VOTEQUORUM_LEAVING; > - > - iov.iov_base = (char *)&req_lib_votequorum_general; > - iov.iov_len = sizeof (struct req_lib_votequorum_general); > - > - error = qb_to_cs_error(qb_ipcc_sendv_recv ( > - votequorum_inst->c, > - &iov, > - 1, > - &res_lib_votequorum_status, > - sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); > - > - if (error != CS_OK) { > - goto error_exit; > - } > - > - error = res_lib_votequorum_status.header.error; > - > -error_exit: > - hdb_handle_put (&votequorum_handle_t_db, handle); > - > - return (error); > -} > - > cs_error_t votequorum_trackstart ( > votequorum_handle_t handle, > uint64_t context, > diff --git a/man/Makefile.am b/man/Makefile.am > index fe4ea6b..5b75297 100644 > --- a/man/Makefile.am > +++ b/man/Makefile.am > @@ -101,7 +101,6 @@ dist_man_MANS = \ > votequorum_finalize.3 \ > votequorum_getinfo.3 \ > votequorum_initialize.3 \ > - votequorum_leaving.3 \ > votequorum_qdisk_getinfo.3 \ > votequorum_qdisk_poll.3 \ > votequorum_qdisk_register.3 \ > diff --git a/man/index.html b/man/index.html > index 2ee5473..4c779ec 100644 > --- a/man/index.html > +++ b/man/index.html > @@ -190,10 +190,6 @@ > Description of the votequorum interface. > <br> > > - <a href="votequorum_leaving.3.html">votequorum_leaving(3)</a>: > - Description of the votequorum interface. > - <br> > - > <a href="votequorum_setexpected.3.html">votequorum_setexpected(3)</a>: > Description of the votequorum interface. > <br> > diff --git a/man/votequorum_leaving.3 b/man/votequorum_leaving.3 > deleted file mode 100644 > index ad7bda4..0000000 > --- a/man/votequorum_leaving.3 > +++ /dev/null > @@ -1,67 +0,0 @@ > -.\"/* > -.\" * Copyright (c) 2009 Red Hat, Inc. > -.\" * > -.\" * All rights reserved. > -.\" * > -.\" * Author: Christine Caulfield <ccaulfie@xxxxxxxxxx> > -.\" * > -.\" * This software licensed under BSD license, the text of which follows: > -.\" * > -.\" * Redistribution and use in source and binary forms, with or without > -.\" * modification, are permitted provided that the following conditions are met: > -.\" * > -.\" * - Redistributions of source code must retain the above copyright notice, > -.\" * this list of conditions and the following disclaimer. > -.\" * - Redistributions in binary form must reproduce the above copyright notice, > -.\" * this list of conditions and the following disclaimer in the documentation > -.\" * and/or other materials provided with the distribution. > -.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its > -.\" * contributors may be used to endorse or promote products derived from this > -.\" * software without specific prior written permission. > -.\" * > -.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > -.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > -.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > -.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > -.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > -.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > -.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > -.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > -.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > -.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > -.\" * THE POSSIBILITY OF SUCH DAMAGE. > -.\" */ > -.TH VOTEQUORUM_LEAVING 3 2009-01-26 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" > -.SH NAME > -votequorum_leaving \- Tell other nodes that we are leaving the cluster > -.SH SYNOPSIS > -.B #include <corosync/votequorum.h> > -.sp > -.BI "int votequorum_leaving(votequorum_handle_t " handle ");" > -.SH DESCRIPTION > -The > -.B votequorum_leaving > -function is used to tell the other nodes in the cluster that this node is leaving. They > -will (when the node actually leaves) reduce quorum to keep the cluster running without > -this node. > -.PP > -This function should only be called if it is known that the node is being shut down for > -a known reason and could be out of the cluster for an extended period of time. > -.PP > -Normal behaviour is for the cluster to reduce the total number of votes, but NOT expected_votes > -when a node leave the cluster, so the cluster could become inquorate. This is correct behaviour > -and is ther eto prevent split-brain. > -.PP > -Do NOT call this function unless you know what you are doing. > -.SH RETURN VALUE > -This call returns the CS_OK value if successful, otherwise an error is returned. > -.PP > -.SH ERRORS > -The errors are undocumented. > -.SH "SEE ALSO" > -.BR votequorum_overview (8), > -.BR votequorum_initialize (3), > -.BR votequorum_finalize (3), > -.BR votequorum_dispatch (3), > -.BR votequorum_fd_get (3), > -.PP > diff --git a/services/votequorum.c b/services/votequorum.c > index 6ab64fc..a27f07d 100644 > --- a/services/votequorum.c > +++ b/services/votequorum.c > @@ -121,7 +121,6 @@ static int quorum; > static int cluster_is_quorate; > static int first_trans = 1; > static unsigned int quorumdev_poll = DEFAULT_QDEV_POLL; > -static unsigned int leaving_timeout = DEFAULT_LEAVE_TMO; > > static uint8_t two_node = 0; > static uint8_t wait_for_all = 0; > @@ -137,7 +136,6 @@ static struct cluster_node *us; > static struct cluster_node *quorum_device = NULL; > static char quorum_device_name[VOTEQUORUM_MAX_QDISK_NAME_LEN]; > static corosync_timer_handle_t quorum_device_timer; > -static corosync_timer_handle_t leaving_timer; > static struct list_head cluster_members_list; > static struct corosync_api_v1 *corosync_api; > static struct list_head trackers_list; > @@ -209,8 +207,6 @@ static void message_handler_req_lib_votequorum_qdisk_poll (void *conn, > static void message_handler_req_lib_votequorum_qdisk_getinfo (void *conn, > const void *message); > > -static void message_handler_req_lib_votequorum_leaving (void *conn, > - const void *message); > static void message_handler_req_lib_votequorum_trackstart (void *conn, > const void *message); > static void message_handler_req_lib_votequorum_trackstop (void *conn, > @@ -260,14 +256,10 @@ static struct corosync_lib_handler quorum_lib_service[] = > .flow_control = COROSYNC_LIB_FLOW_CONTROL_NOT_REQUIRED > }, > { /* 7 */ > - .lib_handler_fn = message_handler_req_lib_votequorum_leaving, > - .flow_control = COROSYNC_LIB_FLOW_CONTROL_NOT_REQUIRED > - }, > - { /* 8 */ > .lib_handler_fn = message_handler_req_lib_votequorum_trackstart, > .flow_control = COROSYNC_LIB_FLOW_CONTROL_NOT_REQUIRED > }, > - { /* 9 */ > + { /* 8 */ > .lib_handler_fn = message_handler_req_lib_votequorum_trackstop, > .flow_control = COROSYNC_LIB_FLOW_CONTROL_NOT_REQUIRED > } > @@ -417,7 +409,6 @@ struct req_exec_quorum_nodeinfo { > */ > #define RECONFIG_PARAM_EXPECTED_VOTES 1 > #define RECONFIG_PARAM_NODE_VOTES 2 > -#define RECONFIG_PARAM_LEAVING 3 > > struct req_exec_quorum_reconfigure { > struct qb_ipc_request_header header __attribute__((aligned(8))); > @@ -447,10 +438,6 @@ static void read_quorum_config(void) > quorumdev_poll = DEFAULT_QDEV_POLL; > } > > - if (icmap_get_uint32("quorum.leaving_timeout", &leaving_timeout) != CS_OK) { > - leaving_timeout = DEFAULT_LEAVE_TMO; > - } > - > icmap_get_uint8("quorum.two_node", &two_node); > > /* > @@ -1183,14 +1170,6 @@ static void message_handler_req_exec_votequorum_reconfigure ( > recalculate_quorum(1, 0); /* Allow decrease */ > break; > > - case RECONFIG_PARAM_LEAVING: > - if (req_exec_quorum_reconfigure->value == 1 && node->state == NODESTATE_MEMBER) { > - node->state = NODESTATE_LEAVING; > - } > - if (req_exec_quorum_reconfigure->value == 0 && node->state == NODESTATE_LEAVING) { > - node->state = NODESTATE_MEMBER; > - } > - break; > } > > LEAVE(); > @@ -1210,26 +1189,6 @@ static int quorum_lib_init_fn (void *conn) > } > > /* > - * Someone called votequorum_leave AGES ago! > - * Assume they forgot to shut down the node. > - */ > -static void leaving_timer_fn(void *arg) > -{ > - ENTER(); > - > - if (us->state == NODESTATE_LEAVING) { > - us->state = NODESTATE_MEMBER; > - } > - > - /* > - * Tell everyone else we made a mistake > - */ > - quorum_exec_send_reconfigure(RECONFIG_PARAM_LEAVING, us->node_id, 0); > - > - LEAVE(); > -} > - > -/* > * Message from the library > */ > static void message_handler_req_lib_votequorum_getinfo (void *conn, const void *message) > @@ -1396,32 +1355,6 @@ error_exit: > LEAVE(); > } > > -static void message_handler_req_lib_votequorum_leaving (void *conn, const void *message) > -{ > - struct res_lib_votequorum_status res_lib_votequorum_status; > - cs_error_t error = CS_OK; > - > - ENTER(); > - > - quorum_exec_send_reconfigure(RECONFIG_PARAM_LEAVING, us->node_id, 1); > - > - /* > - * If we don't shut down in a sensible amount of time then cancel the > - * leave status. > - */ > - if (leaving_timeout) { > - corosync_api->timer_add_duration((unsigned long long)leaving_timeout*1000000, NULL, > - leaving_timer_fn, &leaving_timer); > - } > - > - res_lib_votequorum_status.header.size = sizeof(res_lib_votequorum_status); > - res_lib_votequorum_status.header.id = MESSAGE_RES_VOTEQUORUM_STATUS; > - res_lib_votequorum_status.header.error = error; > - corosync_api->ipc_response_send(conn, &res_lib_votequorum_status, sizeof(res_lib_votequorum_status)); > - > - LEAVE(); > -} > - > static void quorum_device_timer_fn(void *arg) > { > ENTER(); _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss