diff --git a/man/cmap_context_set.3.in b/man/cmap_context_set.3.in index da1f60ca..cacef0d7 100644 --- a/man/cmap_context_set.3.in +++ b/man/cmap_context_set.3.in @@ -1,60 +1,60 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_CONTEXT_SET" 3 "23/01/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_context_set \- Sets the context variable for a CMAP instance .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_context_set (cmap_handle_t \fIhandle\fB, const void *\fIcontext\fB);\fR .SH DESCRIPTION .P The \fBcmap_context_set\fR function is used to store the context variable for cmap instance. -It has no meaning insire libcmap itself and will not be touched by the library. It can +It has no meaning inside libcmap itself and will not be touched by the library. It can be retrieved using .B cmap_context_get(3). .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .SH "SEE ALSO" .BR cmap_context_get (3), .BR cmap_overview (8) diff --git a/man/cmap_dec.3.in b/man/cmap_dec.3.in index 614c96ed..c8322419 100644 --- a/man/cmap_dec.3.in +++ b/man/cmap_dec.3.in @@ -1,92 +1,92 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_DEC" 3 "03/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_inc \- Decrease already stored value in CMAP .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_dec (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB);\fR .SH DESCRIPTION .P The .B cmap_dec function is used to decrease integer value of already stored key inside cmap. The .I handle argument is connection to CMAP database obtained by calling .B cmap_initialize(3) function. .I key_name is name of key to increase value of. Function is defined only on values where increase makes sense and is well defined, so it can be one of: .PP \fBCMAP_VALUETYPE_INT8\fR - 8-bit signed integer .PP \fBCMAP_VALUETYPE_UINT8\fR - 8-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT16\fR - 16-bit signed integer .PP \fBCMAP_VALUETYPE_UINT16\fR - 16-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT32\fR - 32-bit signed integer .PP \fBCMAP_VALUETYPE_UINT32\fR - 32-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT64\fR - 64-bit signed integer .PP \fBCMAP_VALUETYPE_UINT64\fR - 64-bit unsigned integer Overflow/underflow is not detected and it's ignored. .SH RETURN VALUE This call returns the CS_OK value if successful. If value or key_name are unspecified, CS_ERR_INVALID_PARAM is returned. CS_ERR_NOT_EXIST error is returned if key doesn't exist (wasn't created by calling .B cmap_set(3) -first). Some of keys may be tagged read-only directly in corosync and seting such key will result in +first). Some of keys may be tagged read-only directly in corosync and setting such key will result in CS_ERR_ACCESS error. .SH "SEE ALSO" .BR cmap_get (3), .BR cmap_set (3), .BR cmap_initialize (3), .BR cmap_overview (8) diff --git a/man/cmap_delete.3.in b/man/cmap_delete.3.in index e2ee07de..a6ae710d 100644 --- a/man/cmap_delete.3.in +++ b/man/cmap_delete.3.in @@ -1,70 +1,70 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_DELETE" 3 "03/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_delete \- Delete key/value pair from the CMAP service .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_delete(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB);\fR .SH DESCRIPTION .P The .B cmap_delete function is used to delete key from cmap. Key must be previously created by .B cmap_set(3) function. The .I handle argument is connection to CMAP database obtained by calling .B cmap_initialize(3) function. .I key_name is name of key to delete. .SH RETURN VALUE -This call returns the CS_OK value if successful. If key_name is unspecified, CS_ERR_INVALID_PARAM +This call returns the CS_OK value if successful. If key_name is unspecified, CS_ERR_INVALID_PARAM is returned. For nonexisting keys, CS_ERR_NOT_EXIST error is returned. Some of keys may be tagged read-only directly in corosync and deleting such key will result in CS_ERR_ACCESS error. .SH "SEE ALSO" .BR cmap_initialize (3), .BR cmap_set (3), .BR cmap_overview (8) diff --git a/man/cmap_dispatch.3.in b/man/cmap_dispatch.3.in index b791a5eb..b4fa2bab 100644 --- a/man/cmap_dispatch.3.in +++ b/man/cmap_dispatch.3.in @@ -1,91 +1,91 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_DISPATCH" 3 "23/01/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_dispatch \- Dispatches callbacks from the CMAP service .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_dispatch (cmap_handle_t \fIhandle\fB, cs_dispatch_flags_t \fIdispatch_types\fB);\fR .SH DESCRIPTION The .B cmap_dispatch function is used to dispatch configuration changes. .PP -Each application may have several connections to the CMAP API. Each application +Each application may have several connections to the CMAP API. Each application uses the .I handle argument to uniquely identify the connection. .PP The .I dispatch_types argument is used to identify the type of dispatch to execute. The possible types are CS_DISPATCH_ONE, CS_DISPATCH_ALL and CS_DISPATCH_BLOCKING. The dispatch values have the following meanings: .TP .B CS_DISPATCH_ONE Dispatch at least one callback, blocking until the callback is dispatched. .TP .B CS_DISPATCH_ALL Dispatch all waiting callbacks without blocking to wait for any callbacks. .TP .B CS_DISPATCH_BLOCKING Dispatch all callbacks blocking indefinitely. This is used in a threaded program where a thread is created, and then cs_dispatch() is called immediately from the created thread to execute callbacks. .TP .B CS_DISPATCH_ONE_NONBLOCKING Dispatch at most one callback. If there is no pending callback, CS_ERR_TRY_AGAIN is returned. .PP It's needed to call .B cmap_track_add(3) to add tracked items and receive callbacks. .SH RETURN VALUE .P This call returns the CS_OK value if successful, otherwise an error is returned. .SH "SEE ALSO" .BR cmap_track_add (3), .BR cmap_track_delete (3), .BR cmap_overview (8) diff --git a/man/cmap_get.3.in b/man/cmap_get.3.in index f3615a68..15c73e6e 100644 --- a/man/cmap_get.3.in +++ b/man/cmap_get.3.in @@ -1,153 +1,153 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_GET" 3 "03/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_get \- Retrieve value from CMAP .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_get (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, void *\fIvalue\fB, size_t *\fIvalue_len\fB, cmap_value_types_t *\fItype\fB);\fR .P Also shortcuts for different types are defined .P \fBcs_error_t cmap_get_int8 (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int8_t *\fIi8\fB);\fR .P \fBcs_error_t cmap_get_uint8 (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, uint8_t *\fIu8\fB);\fR .P \fBcs_error_t cmap_get_int16 (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int16_t *\fIi16\fB);\fR .P \fBcs_error_t cmap_get_uint16 (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, uint16_t *\fIu16\fB);\fR .P \fBcs_error_t cmap_get_int32 (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int32_t *\fIi32\fB);\fR .P \fBcs_error_t cmap_get_uint32 (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, uint32_t *\fIu32\fB);\fR .P \fBcs_error_t cmap_get_int64 (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int64_t *\fIi64\fB);\fR .P \fBcs_error_t cmap_get_uint64 (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, uint64_t *\fIu64\fB);\fR .P \fBcs_error_t cmap_get_float (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, float *\fIflt\fB);\fR .P \fBcs_error_t cmap_get_double (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, double *\fIdbl\fB);\fR .P \fBcs_error_t cmap_get_string (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, char **\fIstr\fB);\fR .SH DESCRIPTION .P The .B cmap_get function is used to retrieve key from cmap previously set by .B cmap_set(3) function. The .I handle argument is connection to CMAP database obtained by calling .B cmap_initialize(3) function. .I key_name is name of key to get value from. .I value is pointer to preallocated data used as storage for data, but can be also NULL, and then only .I value_len and/or .I type is returned (both of them can also be NULL, allowing function to be used only for test of existence of key). If .I value is not NULL, actual length of value in map is checked against .I *value_len. If .I *value_len is shorter then length of value in map, error CS_ERR_INVALID_PARAM is returned. After successful copy of value, .I *value_len is set to actual length of value in map. Parameter .I type is pointer to memory, where type of value is stored after successful return. Pointer can also be NULL and then nothing is stored. Type can be one of: .PP \fBCMAP_VALUETYPE_INT8\fR - 8-bit signed integer .PP \fBCMAP_VALUETYPE_UINT8\fR - 8-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT16\fR - 16-bit signed integer .PP \fBCMAP_VALUETYPE_UINT16\fR - 16-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT32\fR - 32-bit signed integer .PP \fBCMAP_VALUETYPE_UINT32\fR - 32-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT64\fR - 64-bit signed integer .PP \fBCMAP_VALUETYPE_UINT64\fR - 64-bit unsigned integer .PP \fBCMAP_VALUETYPE_FLOAT\fR - Float value .PP \fBCMAP_VALUETYPE_DOUBLE\fR - Double value .PP \fBCMAP_VALUETYPE_STRING\fR - C-style string .PP \fBCMAP_VALUETYPE_BINARY\fR - Binary data, byte with zero value has no special meaning -Sortcut functions tests cmap type with it's own type. If type didn't match, CS_ERR_INVALID_PARAM error +Shortcut functions tests cmap type with it's own type. If type didn't match, CS_ERR_INVALID_PARAM error is returned. No conversions are done, so for example .B cmap_get_int16 is not able to return value with .B CMAP_VALUETYPE_INT8 type. String shortcut function returns newly allocated memory and caller is responsible for freeing that. .SH RETURN VALUE This call returns the CS_OK value if successful. If value or key_name are unspecified, CS_ERR_INVALID_PARAM is returned. Same error is also returned if .I value is specified, and .I *value_len is too short for store of data. If key doesn't exists (it was not set by calling .B cmap_set(3) function first) CS_ERR_NOT_EXIST error is returned. For helper functions, CS_ERR_INVALID_PARAM is returned if type stored in cmap doesn't match with type of helper function. .SH "SEE ALSO" .BR cmap_set (3), .BR cmap_initialize (3), .BR cmap_overview (8) diff --git a/man/cmap_inc.3.in b/man/cmap_inc.3.in index 0320065e..69ac8516 100644 --- a/man/cmap_inc.3.in +++ b/man/cmap_inc.3.in @@ -1,92 +1,92 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_INC" 3 "03/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_inc \- Increase already stored value in CMAP .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_inc (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB);\fR .SH DESCRIPTION .P The .B cmap_inc function is used to increase integer value of already stored key inside cmap. The .I handle argument is connection to CMAP database obtained by calling .B cmap_initialize(3) function. .I key_name is name of key to increase value of. Function is defined only on values where increase makes sense and is well defined, so it can be one of: .PP \fBCMAP_VALUETYPE_INT8\fR - 8-bit signed integer .PP \fBCMAP_VALUETYPE_UINT8\fR - 8-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT16\fR - 16-bit signed integer .PP \fBCMAP_VALUETYPE_UINT16\fR - 16-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT32\fR - 32-bit signed integer .PP \fBCMAP_VALUETYPE_UINT32\fR - 32-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT64\fR - 64-bit signed integer .PP \fBCMAP_VALUETYPE_UINT64\fR - 64-bit unsigned integer Overflow/underflow is not detected and it's ignored. .SH RETURN VALUE This call returns the CS_OK value if successful. If value or key_name are unspecified, CS_ERR_INVALID_PARAM is returned. CS_ERR_NOT_EXIST error is returned if key doesn't exist (wasn't created by calling .B cmap_set(3) -first). Some of keys may be tagged read-only directly in corosync and seting such key will result in +first). Some of keys may be tagged read-only directly in corosync and setting such key will result in CS_ERR_ACCESS error. .SH "SEE ALSO" .BR cmap_get (3), .BR cmap_set (3), .BR cmap_initialize (3), .BR cmap_overview (8) diff --git a/man/cmap_initialize.3.in b/man/cmap_initialize.3.in index 8bdb0170..b6342e9b 100644 --- a/man/cmap_initialize.3.in +++ b/man/cmap_initialize.3.in @@ -1,63 +1,63 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_INITIALIZE" 3 "20/01/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_initialize \- Initialize CMAP API .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_initialize (cmap_handle_t \fI*handle\fB);\fR .SH DESCRIPTION .P The \fBcmap_initialize\fR function is used to initialize a connection to the Configuration Map API. Each application may have several connections to the CMAP API. -Each application uses the +Each application uses the .I handle argument to uniquely identify the connection. The .I handle argument is then used in other function calls to identify the connection to be used for communication with the CMAP service. .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .SH "SEE ALSO" .BR cmap_finalize (3), .BR cmap_overview (8) diff --git a/man/cmap_iter_finalize.3.in b/man/cmap_iter_finalize.3.in index 51cd5903..8b03d012 100644 --- a/man/cmap_iter_finalize.3.in +++ b/man/cmap_iter_finalize.3.in @@ -1,72 +1,72 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_ITER_FINALIZE" 3 "06/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_iter_finalize \- Finalize iterator for keys stored in CMAP .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_iter_finalize (cmap_handle_t \fIhandle\fB, cmap_iter_handle_t \fIiter_handle\fB);\fR .SH DESCRIPTION .P The .B cmap_iter_finalize -function is used to free up memory asociated with iteration obtained by calling of +function is used to free up memory associated with iteration obtained by calling of .B cmap_iter_init(3) function. The .I handle argument is connection to CMAP database obtained by calling .B cmap_initialize(3) function. .I iter_handle argument is iterator handle obtained by .B cmap_iter_init(3) function. .SH RETURN VALUE This call returns the CS_OK value if successful. CS_ERR_BAD_HANDLE error is returned when iter_handle is invalid. .SH "SEE ALSO" .BR cmap_iter_init (3), .BR cmap_initialize (3), .BR cmap_overview (8) diff --git a/man/cmap_iter_next.3.in b/man/cmap_iter_next.3.in index edc29f8d..b09a5849 100644 --- a/man/cmap_iter_next.3.in +++ b/man/cmap_iter_next.3.in @@ -1,82 +1,82 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_ITER_NEXT" 3 "06/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_iter_next \- Return next item in iteration in CMAP .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_iter_next(cmap_handle_t \fIhandle\fB, cmap_iter_handle_t \fIiter_handle\fB, char \fIkey_name[]\fB, size_t *\fIvalue_len\fB, cmap_value_types_t *\fItype\fB);\fR .SH DESCRIPTION .P The .B cmap_iter_next function is used to get next value in iteration. The .I handle argument is connection to CMAP database obtained by calling .B cmap_initialize(3) function. .I iter_handle argument is iterator handle obtained by .B cmap_iter_init(3) function. Following key name is stored inside .I key_name -argument, which must be preallocated by caller and its quaranted maximum size is CMAP_KEYNAME_MAXLEN -(urrently 255). +argument, which must be preallocated by caller and its guaranteed maximum size is CMAP_KEYNAME_MAXLEN +(currently 255). .I value_len is pointer where length of value is stored, but can be NULL. .I type is also optional argument (can be NULL) and here type of value is stored (type is one of types described in .B cmap_get(3) function). .SH RETURN VALUE This call returns the CS_OK value if successful. If there are no more items to iterate, CS_NO_SECTION error code is returned. .SH "SEE ALSO" .BR cmap_iter_init (3), .BR cmap_iter_finalize (3), .BR cmap_initialize (3), .BR cmap_get (3), .BR cmap_overview (8) diff --git a/man/cmap_keys.8 b/man/cmap_keys.8 index 75177880..b0cd721e 100644 --- a/man/cmap_keys.8 +++ b/man/cmap_keys.8 @@ -1,370 +1,370 @@ .\"/* .\" * Copyright (c) 2012-2014 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_KEYS" 8 "10/10/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_keys \- Overview of keys stored in the Configuration Map .SH OVERVIEW .P There are 3 main types of keys stored in CMAP: .PP * Mapping of values stored in the config file. .PP * Runtime statistics. .PP * Other user created values. In this man page, wild-cards have the usual meaning. .SH KEYS .TP internal_configuration.* Internal configuration data. All keys in this prefix are read only. It's only useful for getting a list of loaded services. .TP logging.* Values read from the configuration file. It's possible to change them at runtime. If subsystem specific configuration is needed, the key must be in the form logging.logger_subsys.SERVICE.key, where SERVICE is upper case name of the service and key is same as in the configuration file. All values are of string type. .TP nodelist.* Values read from the configuration file. Each node element in the configuration file gets assigned it's position starting from zero. So the first node from the config file has nodelist.node.0. prefix. To be a valid entry, each node must have .B ring0_addr key. To change the .B nodeid key, use a u32 data type. Local node position is stored in .B local_node_pos key (RO), so it's easy to find out nodeid/ring addresses of the local node directly from cmap. .TP runtime.blackbox.* Trigger keys for storing fplay data. It's recommended that you the corosync-blackbox command to change keys in this prefix. .TP runtime.connections.* There is information about total number of active connections in given moment in the .B active key, number of closed connections during whole runtime of corosync in the .B closed key and information about each active IPC connection. All keys in this prefix are read-only. .TP runtime.connections.ID.* Each IPC connection has a unique ID. This is in the form [[short_name:][PID:]internal_id. On some platforms, short_name and PID are not filled and only internal_id is used. Typical keys in this prefix are: .B client_pid containing PID of IPC connection (unavailable on some platforms). .B dispatched number of dispatched messages. .B invalid_request number of requests made by IPC which are invalid (calling non-existing call, ...). .B name contains short name of the IPC connection (unavailable on some platforms). .B overload is number of requests which were not processed because of overload. .B queue_size contains the number of messages in the queue waiting for send. .B recv_retries is the total number of interrupted receives. .B requests contains the number of requests made by IPC. .B responses is the number of responses sent to the IPC client. .B send_retries contains the total number of interrupted sends. .B service_id contains the ID of service which the IPC is connected to. .TP runtime.config.* Contains the values actually in use by the totem membership protocol. Values here are either taken from the Corosync configuration file, defaults or computed from entries in the config file. For information on individual keys please refer to the man page .BR corosync.conf (5). .TP runtime.services.* Prefix with statistics for service engines. Each service has it's own .B service_id key in the prefix with the name runtime.services.SERVICE., where SERVICE is the lower case name of the service. Inside the service prefix is the number of messages received and sent by the corosync engine in the format runtime.services.SERVICE.EXEC_CALL.rx and runtime.services.SERVICE.EXEC_CALL.tx, where EXEC_CALL is the internal id of the service call (so for example 3 in cpg service is receive of multicast message from other nodes). .TP runtime.totem.pg.mrp.srp.* Prefix containing statistics about totem. All keys here are read only. Typical key prefixes: .B commit_entered Number of times the processor entered COMMIT state. .B commit_token_lost Number of times the processor lost token in COMMIT state. .B consensus_timeouts How many times the processor timed out forming a consensus about membership. .B continuous_gather How many times the processor was not able to reach consensus. .B firewall_enabled_or_nic_failure Set to 1 when processor was not able to reach consensus for long time. The usual reason is a badly configured firewall or connection failure. .B gather_entered Number of times the processor entered GATHER state. .B gather_token_lost Number of times the processor lost token in GATHER state. .B mcast_retx Number of retransmitted messages. .B mcast_rx Number of received multicast messages. .B mcast_tx Number of transmitted multicast messages. .B memb_commit_token_rx Number of received commit tokens. .B memb_commit_token_tx Number of transmitted commit tokens. .B memb_join_rx Number of received join messages. .B memb_join_tx Number of transmitted join messages. .B memb_merge_detect_rx Number of received member merge messages. .B memb_merge_detect_tx Number of transmitted member merge messages. .B orf_token_rx Number of received orf tokens. .B orf_token_tx Number of transmitted orf tokens. .B recovery_entered Number of times the processor entered recovery. .B recovery_token_lost Number of times the token was lost in recovery state. .B rx_msg_dropped Number of received messages which were dropped because they were not expected (as example multicast message in commit state). .B token_hold_cancel_rx Number of received token hold cancel messages. .B token_hold_cancel_tx Number of transmitted token hold cancel messages. .B mtt_rx_token Mean transit time of token in milliseconds. In other words, time between two consecutive token receives. .B avg_token_workload Average time in milliseconds of holding time of token on the current processor. .B avg_backlog_calc Average number of not yet sent messages on the current processor. .TP runtime.totem.pg.mrp.srp.members.* Prefix containing members of the totem single ring protocol. Each member keys has format runtime.totem.pg.mrp.srp.members.NODEID.KEY, where key is one of: .B ip IP address of member. It's stored in format r(RING_ID) ip(IP_ADDRESS). .B join_count Number of times the processor joined membership with local cluster. When processor fails and rejoins again, this value is incremented. .B status Status of the processor. Can be one of joined and left. .B config_version Config version of the member node. .TP resources.process.PID.* Prefix created by applications using SAM with CMAP integration. It contains the following keys: .B recovery Recovery policy of the process. Can be one of quit or restart. .B poll_period Value passed in sam_initialize as a time_interval. .B last_updated Last time SAM received a heartbeat from the client. .B state State of the client. Can be one of failed, stopped, running and waiting for quorum. .TP uidgid.* Information about users/groups which are allowed to make IPC connections to corosync. Entries loaded from configuration file are stored with uidgid.config.* prefix and are pruned on configuration file reload. Dynamic entries has uidgid.* prefix and a configuration file reload doesn't affect them. .TP quorum.cancel_wait_for_all Tells votequorum to cancel waiting for all nodes at cluster startup. Can be used -to unblock quorum if notes are known to be down. for pcs use only. +to unblock quorum if notes are known to be down. For pcs use only. .TP config.reload_in_progress This value will be set to 1 (or created) when a corosync.conf reload is started, and set to 0 when the reload is completed. This allows interested subsystems to do atomic reconfiguration rather than changing each key. Note that individual add/change/delete notifications will still be sent during a reload. .TP config.totemconfig_reload_in_progress This key is similar to .B config.totemconfig_reload_in_progress but changed after the totem config trigger is processed. It is useful (mainly) for situations when .B nodelist.local_node_pos must be correctly reinstated before anything else. .SH DYNAMIC CHANGE USER/GROUP PERMISSION TO USE COROSYNC IPC Is the same as in the configuration file. eg: to add UID 500 use .br # corosync-cmapctl -s uidgid.uid.500 u8 1 GID is similar, so to add a GID use .br # corosync-cmapctl -s uidgid.gid.500 u8 1 For removal of permissions, simply delete the key .br # corosync-cmapctl -d uidgid.gid.500 .SH DYNAMIC ADD/REMOVE OF UDPU NODE Eg. To add the node with address 10.34.38.108 and nodeid 3. This node is called NEW and it's not running corosync yet. .PP * Find a node position in the node list which is not used yet. It's recommended that you use highest_number + 1. Let's say output of corosync-cmapctl looks like: .br nodelist.local_node_pos (u32) = 1 .br nodelist.node.0.nodeid (u32) = 1 .br nodelist.node.0.ring0_addr (str) = 10.34.38.106 .br nodelist.node.1.nodeid (u32) = 2 .br nodelist.node.1.ring0_addr (str) = 10.34.38.107 So next node position will be 2. .PP * Add all entries needed for the node on all running nodes, as: .br # corosync-cmapctl -s nodelist.node.2.nodeid u32 3 .br # corosync-cmapctl -s nodelist.node.2.ring0_addr str 10.34.38.108 Always add the ring0_addr key last. The Corosync engine on all nodes should reply with .I notice [TOTEM ] adding new UDPU member {10.34.38.108} message. .PP * Add node information to the configuration file on all nodes so that it will survive a restart of corosync. .PP * Copy and edit configuration file to the NEW node. .PP * Start corosync on the NEW node. Removal of a UDPU node is a very similar, slightly reversed action, so .PP * Stop corosync on the OLD node. .PP * Remove the relevant entries from cmap on all nodes. .PP * Change the configuration file on all nodes. .SH "SEE ALSO" .BR corosync_overview (8), .BR corosync.conf (5), .BR corosync-cmapctl (8) diff --git a/man/cmap_set.3.in b/man/cmap_set.3.in index 8dcb88cb..e854cf58 100644 --- a/man/cmap_set.3.in +++ b/man/cmap_set.3.in @@ -1,127 +1,127 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_SET" 3 "23/01/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_set \- Store value in CMAP .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_set (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, const void *\fIvalue\fB, size_t \fIvalue_len\fB, cmap_value_types_t \fItype\fB);\fR .P Also shortcuts for different types are defined .P \fBcs_error_t cmap_set_int8(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int8_t \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_uint8(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, uint8_t \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_int16(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int16_t \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_uint16(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, uint16_t \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_int32(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int32_t \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_uint32(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, uint32_t \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_int64(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int64_t \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_uint64(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, uint64_t \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_float(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, float \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_double(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, double \fIvalue\fB);\fR .P \fBcs_error_t cmap_set_string(cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, const char *\fIvalue\fB);\fR .SH DESCRIPTION .P The .B cmap_set function is used to store key inside cmap. The .I handle argument is connection to CMAP database obtained by calling .B cmap_initialize(3) function. .I key_name is name of key to set value. Key name is limited by minimal (CMAP_KEYNAME_MINLEN, currently 3) and maximal (CMAP_KEYNAME_MAXLEN, currently 255) length. Also key can contain only limited set of characters expressed by regexp [a-zA-Z0-9._-/:]*. .I value is pointer to allocated data which will be stored inside CMAP. Length of value (number of bytes) is supplied as .I value_len parameter. Last parameter is .I type which gives type of value. It may be one of: .PP \fBCMAP_VALUETYPE_INT8\fR - 8-bit signed integer .PP \fBCMAP_VALUETYPE_UINT8\fR - 8-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT16\fR - 16-bit signed integer .PP \fBCMAP_VALUETYPE_UINT16\fR - 16-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT32\fR - 32-bit signed integer .PP \fBCMAP_VALUETYPE_UINT32\fR - 32-bit unsigned integer .PP \fBCMAP_VALUETYPE_INT64\fR - 64-bit signed integer .PP \fBCMAP_VALUETYPE_UINT64\fR - 64-bit unsigned integer .PP \fBCMAP_VALUETYPE_FLOAT\fR - Float value .PP \fBCMAP_VALUETYPE_DOUBLE\fR - Double value .PP \fBCMAP_VALUETYPE_STRING\fR - C-style string .PP \fBCMAP_VALUETYPE_BINARY\fR - Binary data, byte with zero value has no special meaning .SH RETURN VALUE This call returns the CS_OK value if successful. If value or key_name are unspecified, CS_ERR_INVALID_PARAM is returned. Too short or too long key_name returns CS_ERR_NAME_TOO_LONG error code. Some of keys may -be tagged read-only directly in corosync and seting such key will result in CS_ERR_ACCESS error. +be tagged read-only directly in corosync and setting such key will result in CS_ERR_ACCESS error. .SH "SEE ALSO" .BR cmap_get (3), .BR cmap_initialize (3), .BR cmap_overview (8) diff --git a/man/cmap_track_add.3.in b/man/cmap_track_add.3.in index 0cf9fa8d..32b35d05 100644 --- a/man/cmap_track_add.3.in +++ b/man/cmap_track_add.3.in @@ -1,164 +1,164 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CMAP_TRACK_ADD" 3 "06/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cmap_track_add \- Set tracking function for values in CMAP .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cmap_track_add (cmap_handle_t \fIhandle\fB, const char *\fIkey_name\fB, int32_t \fItrack_type\fB, cmap_notify_fn_t \fInotify_fn\fB, void *\fIuser_data\fB, cmap_track_handle_t *\fIcmap_track_handle\fB);\fR .SH DESCRIPTION .P The .B cmap_track_add function is used to set function which tracks changes in CMAP. One CMAP connection can track multiple keys and also it's possible to track one key multiple times. The .I handle argument is connection to CMAP database obtained by calling .B cmap_initialize(3) function. .I key_name argument is ether exact key name or prefix of key name to track changes on. .I track_type is bitfield which may consist of following values: .PP \fBCMAP_TRACK_ADD\fR - track addition of new key (or key added in callback) .PP \fBCMAP_TRACK_DELETE\fR - track deletion of key (or key deleted in callback) .PP \fBCMAP_TRACK_MODIFY\fR - track modification of key (or key modified in callback) .PP \fBCMAP_TRACK_PREFIX\fR - whole prefix is tracked, instead of key only, so "totem." tracking means that "totem.nodeid", "totem.version", ... applies (this value is never returned in callback) .PP .I notify_fn is pointer to function which is called when value is changed. It's definition and meaning of parameters is discussed below. .I user_data argument is passed directly to .I notify_fn without any changes. .I cmap_track_handle is used for removing of tracking when no longer needed by calling .B cmap_track_delete(3) function. Callback function is defined as: .IP .RS .ne 18 .nf .PP typedef void (*cmap_notify_fn_t) ( cmap_handle_t cmap_handle, cmap_track_handle_t cmap_track_handle, int32_t event, const char *key_name, struct cmap_notify_value new_value, struct cmap_notify_value old_value, void *user_data); .ta .fi .RE .IP .PP where .I cmap_handle is handle used in registration of track function. .I cmap_track_handle is handle returned by .B cmap_track_add function. .I event is one of \fBCMAP_TRACK_ADD\fR, \fBCMAP_TRACK_DELETE\fR or \fBCMAP_TRACK_MODIFY\fR. .I key_name is name of changed key. .I new_value is new value of key, or unset if .I event is \fBCMAP_TRACK_DELETE\fR. .I old_value is previous value of key or unset if .I event -is \fBCMAP_TRACK_ADD\fR or for some special keys set directly by Corosync due to speed optimalizations. +is \fBCMAP_TRACK_ADD\fR or for some special keys set directly by Corosync due to speed optimizations. Both .I new_value and .I old_value are structures defined as: .IP .RS .ne 18 .nf .PP struct cmap_notify_value { cmap_value_types_t type; size_t len; const void *data; }; .ta .fi .RE .IP .PP If value is unset, all fields are set to 0. Otherwise .I type is one of cmap types (as described in .B cmap_get(3) function), .I len is length of value in cmap and .I data is pointer to value of item. Data storage is dynamically allocated by caller and notify function must not try to free it. .SH RETURN VALUE This call returns the CS_OK value if successful. It can return CS_ERR_INVALID_PARAM if notify_fn is NULL or track_type is invalid value. .SH "SEE ALSO" .BR cmap_track_delete (3), .BR cmap_initialize (3), .BR cmap_get (3), .BR cmap_dispatch (3), .BR cmap_overview (8) diff --git a/man/corosync-notifyd.8 b/man/corosync-notifyd.8 index 0bb0cfb9..822d1387 100644 --- a/man/corosync-notifyd.8 +++ b/man/corosync-notifyd.8 @@ -1,145 +1,145 @@ .\"/* .\" * Copyright (C) 2010 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Angus Salkeld .\" * .\" * 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 Red Hat, 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 COROSYNC-NOTIFYD 8 2011-01-14 .SH NAME corosync-notifyd \- Listen for important corosync events and send dbus and/or snmp traps. .SH SYNOPSIS .B "corosync-notifyd [\-f] [\-l] [\-o] [\-s] [\-m] [manager] [\-d] [-h]" .SH DESCRIPTION .B corosync-notifyd uses corosync API to listen for important cluster events and can log them, -generate dbus signals or genterate snmp traps. +generate dbus signals or generate snmp traps. .SH OPTIONS .TP .B -f Start application in foreground. .TP .B -l Log all events. .TP .B -o Print events to stdout (turns on -l). .TP .B -s Send SNMP traps on all events. .TP .B -m Set the SNMP manager address. .TP .B -d Send DBUS signals on all events. .TP .B -h Print this help .SH EXAMPLES .br $ corosync-notifyd -o .br corosync-notifyd[18505]: troll[23374016] corosync-notify:18505:12 is now connected to corosync .br corosync-notifyd[18505]: troll[23374016] corosync-notify:18505:13 is now disconnected from corosync .br corosync-notifyd[18505]: troll[23374016] is now quorate .br corosync-notifyd[18505]: r2[1550100672] ip:192.168.100.92 joined .br corosync-notifyd[18505]: r2[1550100672] ip:192.168.100.92 left .br .br $ corosync-notifyd -d .br Note this output below is from "dbus-monitor --system" .br signal sender=:1.216 -> dest=(null destination) serial=2 path=/com/redhat/cluster/corosync; interface=com.redhat.cluster.corosync; member=ConnectionStateChange .br string "troll" .br uint32 23374016 .br string "corosync-notify:18900:12" .br string "connected" .br signal sender=:1.216 -> dest=(null destination) serial=3 path=/com/redhat/cluster/corosync; interface=com.redhat.cluster.corosync; member=ConnectionStateChange .br string "troll" .br uint32 23374016 .br string "corosync-notify:18900:13" .br string "disconnected" .br signal sender=:1.216 -> dest=(null destination) serial=4 path=/com/redhat/cluster/corosync; interface=com.redhat.cluster.corosync; member=QorumStateChange .br string "troll" .br uint32 23374016 .br string "quorate" .br signal sender=:1.216 -> dest=(null destination) serial=5 path=/com/redhat/cluster/corosync; interface=com.redhat.cluster.corosync; member=NodeStateChange .br string "r2" .br uint32 1550100672 .br string "192.168.100.92" .br string "joined" .br signal sender=:1.216 -> dest=(null destination) serial=6 path=/com/redhat/cluster/corosync; interface=com.redhat.cluster.corosync; member=NodeStateChange .br string "r2" .br uint32 1550100672 .br string "192.168.100.92" .br string "left" .SH SEE ALSO .BR corosync (8), .BR corosync-cmapctl (8), .BR dbus-monitor (1), .SH AUTHOR Angus Salkeld .PP diff --git a/man/corosync-qdevice.8 b/man/corosync-qdevice.8 index 338806ea..b7f6d861 100644 --- a/man/corosync-qdevice.8 +++ b/man/corosync-qdevice.8 @@ -1,318 +1,318 @@ .\"/* .\" * Copyright (C) 2016 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse .\" * .\" * 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 Red Hat, 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 COROSYNC-QDEVICE 8 2016-06-29 .SH NAME corosync-qdevice \- QDevice daemon .SH SYNOPSIS .B "corosync-qdevice [-dfh] [-S option=value[,option2=value2,...]]" .SH DESCRIPTION .B corosync-qdevice is a daemon running on each node of a cluster. It provides a configured number of votes to the quorum subsystem based on a third-party arbitrator's decision. Its primary use is to allow a cluster to sustain more node failures than standard quorum rules allow. It is recommended for clusters with an even number of nodes and highly recommended for 2 node clusters. .SH OPTIONS .TP .B -d Forcefully turn on debug information without the need to change corosync.conf. .TP .B -f Do not daemonize, run in the foreground. .TP .B -h Show short help text .TP .B -S Set advanced settings described in its own section below. This option shouldn't be generally used because most of the options are not safe to change. .SH CONFIGURATION .B corosync-qdevice reads its configuration from corosync.conf file. The main configuration is within .B quorum.device sub-key. Each model also has its own configuration within a similarly named sub-key. .TP .B model Specifies the model to be used. This parameter is required. .B corosync-qdevice is modular and is able to support multiple different models. The model basically defines what type of arbitrator is used. Currently only .I net is supported. .TP .B timeout Specifies how often .B corosync-qdevice should call the votequorum_poll function. It is also used by the net model to adjust its hearbeat timeout. It is recommended that you don't change this value. Default is 10000. .TP .B sync_timeout Specifies how often .B corosync-qdevice should call the votequorum_poll function during a sync phase. It is recommended that you don't change this value. Default is 30000. .TP .B votes The number of votes provided to the cluster by qdevice. Default is (number_of_nodes - 1) or generally sum(votes_per_node) - 1. .PP .B quorum.device.net holds the configuration for model 'net'. .TP .B tls Can be one of .I on, off or required and specifies if tls should be used. .I on means a connection with TLS is attempted first, but if the server doesn't advertise TLS support then non-TLS will be used. .I off is used then TLS is not required and it's then not even tried. This mode is the only one which doesn't need a properly initialized NSS database. .I required means TLS is required and if the server doesn't support TLS, qdevice will exit with error message. Default is on. .TP .B host Specifies the IP address or host name of the qnetd server to be used. This parameter is required. .TP .B port Specifies TCP port of qnetd server. Default is 5403. .TP .B algorithm Decision algorithm. Can be one of the .I ffsplit or .I lms. (actually there are also .I test and .I 2nodelms , both of which are mainly for developers and shouldn't be used for production clusters). For a description of what each algorithm means and how the algorithms differ see their individual sections. Default value is ffsplit. .TP .B tie_breaker can be one of .I lowest, .I highest or valid_node_id (number) values. It's used as a fallback if qdevice has to decide between two or more equal partitions. .I lowest means the partition with the lowest node id is chosen. .I highest means the partition with highest node id is chosen. And valid_node_id means that the partition containing the node with the given node id is chosen. Default is 'lowest'. .TP .B connect_timeout Timeout when .B corosync-qdevice is trying to connect to .B corosync-qnetd host. Default is 0.8 * quorum.sync_timeout. .TP .B force_ip_version can be one of .I 0|4|6 and forces the software to use the given IP version. .I 0 (default value) means IPv6 is preferred and IPv4 should be used as a fallback. .PP Logging configuration is within the .B logging directive. .B corosync-qdevice parses and supports most of the options with exception of .B to_logfile, .B logfile and .B logfile_priority. The .B logger_subsys sub-directive can be also used if .B subsys is set to QDEVICE. .PP For .B corosync-qdevice to work correctly, the .B nodelist directive has to be used and properly configured. Also the net model requires that .B totem.cluster_name option is set. .SH MODEL NET TLS CONFIGURATION For model net to work using TLS, it's necessary to create the NSS database, import Qnetd CA certificate, and get/distribute a valid client certificate. If pcs is used (recommended) the following steps are not needed because pcs does them automatically. .B corosync-qdevice-net-certutil is the tool to perform required actions semi-automatically. Please consult the help output of it and its man page. For a first time configuration it may make sense to start with the .B -Q option. If TLS is not required just edit corosync.conf file and set .B quorum.device.net.tls to .I off. .SH MODEL NET ALGORITHMS Algorithms are used to change behavior of how .B corosync-qnetd provides votes to a given node/partition. Currently there are two algorithms supported. .TP .B ffsplit This one makes sense only for clusters with even number of nodes. It provides exactly one vote to the partition with the highest number of active nodes. If there are two exactly similar partitions, it provides its vote to the partition that has the most clients connected to the qnetd server. If this number is also equal, then the tie_breaker is used. It is able to transition its vote if the currently active partition becomes partitioned and a non-active partition still has at least 50% of the active nodes. Because of this, a vote is not provided if the qnetd connection is not active. To use this algorithm it's required to set the number of votes per node to 1 (default) and the qdevice number of votes has to be also 1. This is achieved by setting .B quorum.device.votes key in corosync.conf file to 1. .TP .B lms Last-man-standing. If the node is the only one left in the cluster that can see the qnetd server then we return a vote. If more than one node can see the qnetd server but some nodes can't see each other then the cluster is divided up into 'partitions' based on their ring_id and this algorithm returns a vote to the largest active partition or, -if there is more than 1 equal partiton, the partition that contains the tie_breaker +if there is more than 1 equal partition, the partition that contains the tie_breaker node (lowest, highest, etc). For LMS to work, the number of qdevice votes has to be set to default (so just delete .B quorum.device.votes key from corosync.conf). .SH ADVANCED SETTINGS Set by using .B -S option. The default value is shown in parentheses) Options beginning with .B net_ prefix are specific to model net. .TP .B lock_file Lock file location. (/var/run/corosync-qdevice/corosync-qdevice.pid) .TP .B local_socket_file Internal IPC socket file location. (/var/run/corosync-qdevice/corosync-qdevice.sock) .TP .B local_socket_backlog Parameter passed to listen syscall. (10) .TP .B max_cs_try_again How many times to retry the call to a corosync function which has returned CS_ERR_TRY_AGAIN. (10) .TP .B votequorum_device_name Name used for qdevice registration. (Qdevice) .TP .B ipc_max_clients Maximum allowed simultaneous IPC clients. (10) .TP .B ipc_max_receive_size Maximum size of a message received by IPC client. (4096) .TP .B ipc_max_send_size Maximum size of a message allowed to be sent to an IPC client. (65536) .TP .B master_wins Force enable/disable master wins. (default is model) .TP .B net_nss_db_dir NSS database directory. (/etc/corosync/qdevice/net/nssdb) .TP .B net_initial_msg_receive_size Initial (used during connection parameters negotiation) maximum size of the receive buffer for message (maximum allowed message size received from qnetd). (32768) .TP .B net_initial_msg_send_size Initial (used during connection parameter negotiation) maximum size of one send buffer (message) to be sent to server. (32768) .TP .B net_min_msg_send_size Minimum required size of one send buffer (message) to be sent to server. (32768) .TP .B net_max_msg_receive_size Maximum allowed size of receive buffer for a message sent by server. (16777216) .TP .B net_max_send_buffers Maximum number of send buffers. (10) .TP .B net_nss_qnetd_cn Canonical name of qnetd server certificate. (Qnetd Server) .TP .B net_nss_client_cert_nickname NSS nickname of qdevice client certificate. (Cluster Cert) .TP .B net_heartbeat_interval_min Minimum heartbeat timeout accepted by client in ms. (1000) .TP .B net_heartbeat_interval_max Maximum heartbeat timeout accepted by client in ms. (120000) .TP .B net_min_connect_timeout Minimum connection timeout accepted by client in ms. (1000) .TP .B net_max_connect_timeout Maximum connection timeout accepted by client in ms. (120000) .TP .B net_test_algorithm_enabled Enable test algorithm. (if built with --enable-debug on, otherwise off) .SH SEE ALSO .BR corosync-qdevice-tool (8) .BR corosync-qdevice-net-certutil (8) .BR corosync-qnetd (8) .BR corosync.conf (5) .SH AUTHOR Jan Friesse .PP diff --git a/man/corosync.8 b/man/corosync.8 index 41f634fa..b5451ade 100644 --- a/man/corosync.8 +++ b/man/corosync.8 @@ -1,68 +1,68 @@ .\"/* .\" * Copyright (C) 2010 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Angus Salkeld .\" * .\" * 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 COROSYNC 8 2010-05-30 .SH NAME corosync \- The Corosync Cluster Engine. .SH SYNOPSIS .B "corosync [\-f] [\-p] [\-r] [\-v]" .SH DESCRIPTION .B corosync -Corosync provides clustering infracture such as membership, messaging and quorum. +Corosync provides clustering infrastructure such as membership, messaging and quorum. .SH OPTIONS .TP .B -f Start application in foreground. .TP .B -p Do not set process priority. .TP .B -r Set round robin realtime scheduling (default). .TP .B -t Test configuration and then exit. .TP .B -v Display version and SVN revision of Corosync and exit. .SH SEE ALSO .BR corosync_overview (8), .BR corosync.conf (5), .BR cpg_overview (8), .BR votequorum_overview (8), .BR sam_overview (8), .BR cmap_overview (8), .BR quorum_overview (8) .SH AUTHOR Angus Salkeld .PP diff --git a/man/corosync.conf.5 b/man/corosync.conf.5 index 2181057f..2c4c12ce 100644 --- a/man/corosync.conf.5 +++ b/man/corosync.conf.5 @@ -1,653 +1,653 @@ .\"/* .\" * Copyright (c) 2005 MontaVista Software, Inc. .\" * Copyright (c) 2006-2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Steven Dake (sdake@redhat.com) .\" * .\" * 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 COROSYNC_CONF 5 2012-10-10 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME corosync.conf - corosync executive configuration file .SH SYNOPSIS /etc/corosync/corosync.conf .SH DESCRIPTION The corosync.conf instructs the corosync executive about various parameters needed to control the corosync executive. Empty lines and lines starting with # character are ignored. The configuration file consists of bracketed top level directives. The possible directive choices are: .TP totem { } This top level directive contains configuration options for the totem protocol. .TP logging { } This top level directive contains configuration options for logging. .TP quorum { } This top level directive contains configuration options for quorum. .TP nodelist { } This top level directive contains configuration options for nodes in cluster. .TP qb { } This top level directive contains configuration options related to libqb. .PP The .B interface sub-directive of totem is optional for UDP and knet transports. For knet, multiple interface subsections define parameters for each knet link on the system. For UDP, there should be just one interface section that defines the multicast or broadcast options for the link. For UDPU an interface section is not needed and it is recommended that the nodelist is used to define cluster nodes. .TP linknumber This specifies the link number for the interface. When using the knet protocol, each interface should specify separate link numbers to uniquely identify to the membership protocol which interface to use for which link. The linknumber must start at 0. For UDP the only supported linknumber is 0. .TP knet_link_priority This specifies the priority for the link when knet is used in 'passive' mode. (see link_mode below) .TP knet_ping_interval This specifies the interval between knet link pings. (default 1000 ms) .TP knet_ping_timeout If no ping is received within this time, the knet link is declared dead. (default 2000 ms) .TP knet_ping_precision How many values of latency are used to calculate the average link latency. (default 2048 samples) .TP knet_pong_count How many valid ping/pongs before a link is marked UP. (default 5) .TP bindnetaddr (udp only) This specifies the network address the corosync executive should bind to when using udp. bindnetaddr (udp only) should be an IP address configured on the system, or a network address. For example, if the local interface is 192.168.5.92 with netmask 255.255.255.0, you should set bindnetaddr to 192.168.5.92 or 192.168.5.0. If the local interface is 192.168.5.92 with netmask 255.255.255.192, set bindnetaddr to 192.168.5.92 or 192.168.5.64, and so forth. This may also be an IPV6 address, in which case IPV6 networking will be used. In this case, the exact address must be specified and there is no automatic selection of the network interface within a specific subnet as with IPv4. If IPv6 networking is used, the nodeid field in nodelist must be specified. .TP broadcast (udp only) This is optional and can be set to yes. If it is set to yes, the broadcast address will be used for communication. If this option is set, mcastaddr should not be set. .TP mcastaddr (udp only) This is the multicast address used by corosync executive. The default should work for most networks, but the network administrator should be queried about a multicast address to use. Avoid 224.x.x.x because this is a "config" multicast address. This may also be an IPV6 multicast address, in which case IPV6 networking will be used. If IPv6 networking is used, the nodeid field in nodelist must be specified. It's not necessary to use this option if cluster_name option is used. If both options are used, mcastaddr has higher priority. .TP mcastport (udp only) This specifies the UDP port number. It is possible to use the same multicast address on a network with the corosync services configured for different UDP ports. Please note corosync uses two UDP ports mcastport (for mcast receives) and mcastport - 1 (for mcast sends). If you have multiple clusters on the same network using the same mcastaddr please configure the mcastports with a gap. .TP ttl (udp only) This specifies the Time To Live (TTL). If you run your cluster on a routed network then the default of "1" will be too small. This option provides a way to increase this up to 255. The valid range is 0..255. .PP .PP Within the .B totem directive, there are seven configuration options of which one is required, five are optional, and one is required when IPV6 is configured in the interface subdirective. The required directive controls the version of the totem configuration. The optional option unless using IPV6 directive controls identification of the processor. The optional options control secrecy and authentication, the network mode of operation and maximum network MTU field. .TP version This specifies the version of the configuration file. Currently the only valid version for this directive is 2. .PP clear_node_high_bit This configuration option is optional and is only relevant when no nodeid is specified. Some corosync clients require a signed 32 bit nodeid that is greater than zero however by default corosync uses all 32 bits of the IPv4 address space when generating a nodeid. Set this option to yes to force the high bit to be zero and therefor ensure the nodeid is a positive signed 32 bit integer. WARNING: The clusters behavior is undefined if this option is enabled on only a subset of the cluster (for example during a rolling upgrade). .TP crypto_hash This specifies which HMAC authentication should be used to authenticate all messages. Valid values are none (no authentication), md5, sha1, sha256, sha384 and sha512. Encrypted transmission is only supported for the knet transport. The default is sha1. .TP crypto_cipher This specifies which cipher should be used to encrypt all messages. Valid values are none (no encryption), aes256, aes192, aes128 and 3des. Enabling crypto_cipher, requires also enabling of crypto_hash. Encrypted transmission is only supported for the knet transport. The default is aes256. .TP link_mode This specifies the Kronosnet mode, which may be passive, active, or rr (round-robin). .B passive: the active link with the lowest priority will be used. If one or more links share the same priority the one with the lowest link ID will be used. .B active: All active links will be used simultaneously to send traffic. link priority is ignored. .B rr: Round-Robin policy. Each packet will be sent to the next active link in order. If only one interface directive is specified, passive is automatically chosen. The maximum number of interface directives that is allowed with Kronosnet is 8. For other transports it is 1. When using multiple interfaces, make sure to use different multicast address/port (port for same address must differ by at least two) pair for each interface (this is checked by parser). .TP netmtu This specifies the network maximum transmit unit. To set this value beyond 1500, the regular frame MTU, requires ethernet devices that support large, or also called jumbo, frames. If any device in the network doesn't support large frames, the protocol will not operate properly. The hosts must also have their mtu size set from 1500 to whatever frame size is specified here. Please note while some NICs or switches claim large frame support, they support 9000 MTU as the maximum frame size including the IP header. Setting the netmtu and host MTUs to 9000 will cause totem to use the full 9000 bytes of the frame. Then Linux will add a 18 byte header moving the full frame size to 9018. As a result some hardware will not operate properly with this size of data. A netmtu of 8982 seems to work for the few large frame devices that have been tested. Some manufacturers claim large frame support when in fact they support frame sizes of 4500 bytes. When sending multicast traffic, if the network frequently reconfigures, chances are that some device in the network doesn't support large frames. Choose hardware carefully if intending to use large frame support. The default is 1500. .TP transport This directive controls the transport mechanism used. The default is knet. The transport type can also be set to udpu or udp. Only knet allows crypto or multiple interfaces per node. .TP cluster_name This specifies the name of cluster and it's used for automatic generating of multicast address. .TP config_version This specifies version of config file. This is converted to unsigned 64-bit int. By default it's 0. Option is used to prevent joining old nodes with not up-to-date configuration. If value is not 0, and node is going for first time (only for first time, join after split doesn't follow this rules) from single-node membership to multiple nodes membership, other nodes config_versions are collected. If current node config_version is not equal to highest of collected versions, corosync is terminated. .TP ip_version Specifies version of IP to use for communication. Value can be one of ipv4 or ipv6. Default (if unspecified) is ipv4. Within the .B totem directive, there are several configuration options which are used to control the operation of the protocol. It is generally not recommended to change any of these values without proper guidance and sufficient testing. Some networks may require larger values if suffering from frequent reconfigurations. Some applications may require faster failure detection times which can be achieved by reducing the token timeout. .TP token This timeout is used directly or as a base for real token timeout calculation (explained in .B token_coefficient section). Token timeout specifies in milliseconds until a token loss is declared after not receiving a token. This is the time spent detecting a failure of a processor in the current configuration. Reforming a new configuration takes about 50 milliseconds in addition to this timeout. For real token timeout used by totem it's possible to read cmap value of .B runtime.config.token key. The default is 1000 milliseconds. .TP token_coefficient This value is used only when .B nodelist section is specified and contains at least 3 nodes. If so, real token timeout is then computed as token + (number_of_nodes - 2) * token_coefficient. This allows cluster to scale without manually changing token timeout every time new node is added. This value can be set to 0 resulting in effective removal of this feature. The default is 650 milliseconds. .TP token_retransmit This timeout specifies in milliseconds after how long before receiving a token the token is retransmitted. This will be automatically calculated if token is modified. It is not recommended to alter this value without guidance from the corosync community. The default is 238 milliseconds. .TP hold This timeout specifies in milliseconds how long the token should be held by the representative when the protocol is under low utilization. It is not recommended to alter this value without guidance from the corosync community. The default is 180 milliseconds. .TP token_retransmits_before_loss_const This value identifies how many token retransmits should be attempted before forming a new configuration. If this value is set, retransmit and hold will be automatically calculated from retransmits_before_loss and token. The default is 4 retransmissions. .TP join This timeout specifies in milliseconds how long to wait for join messages in the membership protocol. The default is 50 milliseconds. .TP send_join This timeout specifies in milliseconds an upper range between 0 and send_join -to wait before sending a join message. For configurations with less then +to wait before sending a join message. For configurations with less than 32 nodes, this parameter is not necessary. For larger rings, this parameter is necessary to ensure the NIC is not overflowed with join messages on formation of a new ring. A reasonable value for large rings (128 nodes) would be 80msec. Other timer values must also change if this value is changed. Seek advice from the corosync mailing list if trying to run larger configurations. The default is 0 milliseconds. .TP consensus This timeout specifies in milliseconds how long to wait for consensus to be achieved before starting a new round of membership configuration. The minimum value for consensus must be 1.2 * token. This value will be automatically calculated at 1.2 * token if the user doesn't specify a consensus value. -For two node clusters, a consensus larger then the join timeout but less then +For two node clusters, a consensus larger than the join timeout but less than token is safe. For three node or larger clusters, consensus should be larger -then token. There is an increasing risk of odd membership changes, which stil +than token. There is an increasing risk of odd membership changes, which still guarantee virtual synchrony, as node count grows if consensus is less than token. The default is 1200 milliseconds. .TP merge This timeout specifies in milliseconds how long to wait before checking for a partition when no multicast traffic is being sent. If multicast traffic is being sent, the merge detection happens automatically as a function of the protocol. The default is 200 milliseconds. .TP downcheck This timeout specifies in milliseconds how long to wait before checking that a network interface is back up after it has been downed. -The default is 1000 millseconds. +The default is 1000 milliseconds. .TP fail_recv_const This constant specifies how many rotations of the token without receiving any of the messages when messages should be received may occur before a new configuration is formed. The default is 2500 failures to receive a message. .TP seqno_unchanged_const This constant specifies how many rotations of the token without any multicast traffic should occur before the hold timer is started. The default is 30 rotations. .TP heartbeat_failures_allowed [HeartBeating mechanism] Configures the optional HeartBeating mechanism for faster failure detection. Keep in mind that engaging this mechanism in lossy networks could cause faulty loss declaration as the mechanism relies on the network for heartbeating. So as a rule of thumb use this mechanism if you require improved failure in low to medium utilized networks. This constant specifies the number of heartbeat failures the system should tolerate before declaring heartbeat failure e.g 3. Also if this value is not set or is 0 then the heartbeat mechanism is not engaged in the system and token rotation is the method of failure detection The default is 0 (disabled). .TP max_network_delay [HeartBeating mechanism] This constant specifies in milliseconds the approximate delay that your network takes to transport one packet from one machine to another. This value is to be set by system engineers and please don't change if not sure as this effects the failure detection mechanism using heartbeat. The default is 50 milliseconds. .TP window_size This constant specifies the maximum number of messages that may be sent on one token rotation. If all processors perform equally well, this value could be large (300), which would introduce higher latency from origination to delivery for very large rings. To reduce latency in large rings(16+), the defaults are a safe compromise. If 1 or more slow processor(s) are present among fast -processors, window_size should be no larger then 256000 / netmtu to avoid +processors, window_size should be no larger than 256000 / netmtu to avoid overflow of the kernel receive buffers. The user is notified of this by the display of a retransmit list in the notification logs. There is no loss of data, but performance is reduced when these errors occur. The default is 50 messages. .TP max_messages This constant specifies the maximum number of messages that may be sent by one processor on receipt of the token. The max_messages parameter is limited to 256000 / netmtu to prevent overflow of the kernel transmit buffers. The default is 17 messages. .TP miss_count_const This constant defines the maximum number of times on receipt of a token a message is checked for retransmission before a retransmission occurs. This parameter is useful to modify for switches that delay multicast packets compared to unicast packets. The default setting works well for nearly all modern switches. The default is 5 messages. .TP knet_pmtud_interval How often the knet PMTUd runs to look for network MTU changes. Value in seconds, default: 60 .PP Within the .B logging directive, there are several configuration options which are all optional. .PP The following 3 options are valid only for the top level logging directive: .TP timestamp This specifies that a timestamp is placed on all log messages. The default is off. .TP fileline This specifies that file and line should be printed. The default is off. .TP function_name This specifies that the code function name should be printed. The default is off. .PP The following options are valid both for top level logging directive and they can be overridden in logger_subsys entries. .TP to_stderr .TP to_logfile .TP to_syslog These specify the destination of logging output. Any combination of these options may be specified. Valid options are .B yes and .B no. The default is syslog and stderr. Please note, if you are using to_logfile and want to rotate the file, use logrotate(8) with the option .B copytruncate. eg. .ne 18 .RS .nf .ft CW /var/log/corosync.log { missingok compress notifempty daily rotate 7 copytruncate } .ft .fi .RE .TP logfile If the .B to_logfile directive is set to .B yes , this option specifies the pathname of the log file. No default. .TP logfile_priority This specifies the logfile priority for this particular subsystem. Ignored if debug is on. Possible values are: alert, crit, debug (same as debug = on), emerg, err, info, notice, warning. The default is: info. .TP syslog_facility This specifies the syslog facility type that will be used for any messages sent to syslog. options are daemon, local0, local1, local2, local3, local4, local5, local6 & local7. The default is daemon. .TP syslog_priority This specifies the syslog level for this particular subsystem. Ignored if debug is on. Possible values are: alert, crit, debug (same as debug = on), emerg, err, info, notice, warning. The default is: info. .TP debug This specifies whether debug output is logged for this particular logger. Also can contain value trace, what is highest level of debug information. The default is off. .PP Within the .B logging directive, logger_subsys directives are optional. .PP Within the .B logger_subsys sub-directive, all of the above logging configuration options are valid and can be used to override the default settings. The subsys entry, described below, is mandatory to identify the subsystem. .TP subsys This specifies the subsystem identity (name) for which logging is specified. This is the -name used by a service in the log_init () call. E.g. 'CPG'. This directive is +name used by a service in the log_init() call. E.g. 'CPG'. This directive is required. .PP Within the .B quorum directive it is possible to specify the quorum algorithm to use with the .TP provider directive. At the time of writing only corosync_votequorum is supported. See votequorum(5) for configuration options. .PP Within the .B nodelist directive it is possible to specify specific information about nodes in cluster. Directive can contain only .B node sub-directive, which specifies every node that should be a member of the membership, and where non-default options are needed. Every node must have at least ring0_addr field filled. Every node that should be a member of the membership must be specified. Possible options are: .TP ringX_addr -This specifies ip address of one of the nodes. X is link number. +This specifies IP address of one of the nodes. X is link number. .TP nodeid This configuration option is required for each node. It is a 32 bit value specifying the node identifier delivered to the cluster membership service. The node identifier value of zero is reserved and should not be used. .PP Within the .B qb directive it is possible to specify options for libqb. Possible option is: .TP ipc_type This specifies type of IPC to use. Can be one of native (default), shm and socket. Native means one of shm or socket, depending on what is supported by OS. On systems with support for both, SHM is selected. SHM is generally faster, but need to allocate ring buffer file in /dev/shm. .SH "FILES" .TP /etc/corosync/corosync.conf The corosync executive configuration file. .SH "SEE ALSO" .BR corosync_overview (8), .BR votequorum (5), .BR corosync-qdevice (8), .BR logrotate (8) .PP diff --git a/man/cpg_dispatch.3.in b/man/cpg_dispatch.3.in index f824a3ff..a71ca6ab 100644 --- a/man/cpg_dispatch.3.in +++ b/man/cpg_dispatch.3.in @@ -1,111 +1,111 @@ .\"/* .\" * Copyright (c) 2006 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Patrick Caulfield .\" * .\" * 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 CPG_DISPATCH 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME cpg_dispatch \- Dispatches callbacks from the CPG service .SH SYNOPSIS .B #include .sp .BI "int cpg_dispatch(cpg_handle_t " handle ", cpg_dispatch_t *" dispatch_types "); .SH DESCRIPTION The .B cpg_dispatch function is used to dispatch configuration changes or messages from the closed process groups API. .PP -Each application may have several connections to the CPG API. Each application +Each application may have several connections to the CPG API. Each application uses the .I handle argument to uniquely identify the connection. .PP The .I dispatch_types argument is used to identify the type of dispatch to execute. The possible types are defined by the structure: .IP .RS .ne 18 .nf .ta 4n 30n 33n typedef enum { CS_DISPATCH_ONE, CS_DISPATCH_ALL, CS_DISPATCH_BLOCKING } cpg_dispatch_t; .ta .fi .RE .IP .PP .PP The dispatch values have the following meanings: .TP .B CS_DISPATCH_ONE Dispatch atleast one callback, blocking until the callback is dispatched. .TP .B CS_DISPATCH_ALL Dispatch all waiting callbacks without blocking to wait for any callbacks. .TP .B CS_DISPATCH_BLOCKING Dispatch all callbacks, blocking indefinitely. This is used in a threaded program where a thread is created, and then cpg_dispatch() is called immediately from the created thread to execute callbacks. .TP .B CS_DISPATCH_ONE_NONBLOCKING Dispatch at most one callback. If there is no pending callback, CS_ERR_TRY_AGAIN is returned. .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 cpg_overview (8), .BR cpg_initialize (3), .BR cpg_finalize (3), .BR cpg_fd_get (3), .BR cpg_dispatch (3), .BR cpg_join (3), .BR cpg_leave (3), .BR cpg_mcast_joined (3), .BR cpg_membership_get (3) .BR cpg_zcb_alloc (3) .BR cpg_zcb_free (3) .BR cpg_zcb_mcast_joined (3) .BR cpg_context_get (3) .BR cpg_context_set (3) .BR cpg_local_get (3) .PP diff --git a/man/cpg_initialize.3.in b/man/cpg_initialize.3.in index 50129862..1c866cf2 100644 --- a/man/cpg_initialize.3.in +++ b/man/cpg_initialize.3.in @@ -1,175 +1,175 @@ .\"/* .\" * Copyright (c) 2006-2009 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Christine Caulfield .\" * .\" * 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 CPG_INITIALIZE 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME cpg_initialize \- Create a new connection to the CPG service .SH SYNOPSIS .B #include .sp .BI "int cpg_initialize(cpg_handle_t *" handle ", cpg_callbacks_t *" callbacks "); .SH DESCRIPTION The .B cpg_initialize function is used to initialize a connection to the closed process groups API. This function is deprecated and .B cpg_model_initialize should be used in newly written code. .PP -Each application may have several connections to the CPG API. Each application +Each application may have several connections to the CPG API. Each application uses the .I handle argument to uniquely identify the connection. The .I handle argument is then used in other function calls to identify the connection to be used for communication with the CPG service. .PP Every time an CPG event occurs within the joined group, one of the callbacks specified by the argument .I callbacks is called. The callback functions are described by the following type definitions: .PP .PP .IP .RS .ne 18 .nf .ta 4n 20n 32n typedef void (*cpg_deliver_fn_t) ( cpg_handle_t handle, const struct cpg_name *group_name, uint32_t nodeid, uint32_t pid, const void *msg, size_t msg_len); typedef void (*cpg_confchg_fn_t) ( cpg_handle_t handle, const struct cpg_name *group_name, const struct cpg_address *member_list, size_t member_list_entries, const struct cpg_address *left_list, size_t left_list_entries, const struct cpg_address *joined_list, size_t joined_list_entries); .ta .fi .RE .IP .PP .PP The .I callbacks argument is of the type: .IP .RS .ne 18 .nf .PP typedef struct { cpg_deliver_fn_t cpg_deliver_fn; cpg_confchg_fn_t cpg_confchg_fn; } cpg_callbacks_t; .ta .fi .RE .IP .PP When a configuration change occurs or a message is to be delivered one of the callbacks is called from the .B cpg_dispatch() function. If a configuration change occurs, .I cpg_confchg_fn is called. If a delivery of a message occurs, .I cpg_deliver_fn is called. The .I cpg_address structure is defined .IP .RS .ne 18 .nf .PP struct cpg_address { unsigned int nodeid; unsigned int pid; unsigned int reason; }; .ta .fi .RE .IP .PP where nodeid is a 32 bit unique node identifier, pid is the process ID of the process that has joined/left the group or sent the message, and reason is an integer code indicating why the node joined/left the group. .PP .IP .RS .ne 18 .nf .PP CPG_REASON_JOIN - the process joined a group using cpg_join(). CPG_REASON_LEAVE - the process left a group using cpg_leave() CPG_REASON_NODEDOWN - the process left a group because the node left the cluster. CPG_REASON_NODEUP - the process joined a group because it was already a member of a group on a node that has just joined the cluster CPG_REASON_PROCDOWN - the process left a group without calling cpg_leave() .ta .fi .RE .IP .PP .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 cpg_overview (8), .BR cpg_initialize (3), .BR cpg_finalize (3), .BR cpg_fd_get (3), .BR cpg_dispatch (3), .BR cpg_join (3), .BR cpg_leave (3), .BR cpg_mcast_joined (3), .BR cpg_membership_get (3) .BR cpg_zcb_alloc (3) .BR cpg_zcb_free (3) .BR cpg_zcb_mcast_joined (3) .BR cpg_context_get (3) .BR cpg_context_set (3) .BR cpg_local_get (3) .BR cpg_model_initialize (3) .PP diff --git a/man/cpg_iteration_finalize.3.in b/man/cpg_iteration_finalize.3.in index 747d2270..49ca64ba 100644 --- a/man/cpg_iteration_finalize.3.in +++ b/man/cpg_iteration_finalize.3.in @@ -1,67 +1,67 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "CPG_ITERATION_FINALIZE" 3 "05/03/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P cpg_iteration_finalize \- Finalize iterator for members of CPG .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t cpg_iteration_finalize (cpg_iteration_handle_t \fIhandle\fB);\fR .SH DESCRIPTION .P The .B cpg_iteration_finalize -function is used to free up memory asociated with iteration obtained by calling of +function is used to free up memory associated with iteration obtained by calling of .B cpg_iteration_initialize(3) function. The .I handle argument is iterator handle obtained by .B cpg_iteration_initialize(3) function. .SH RETURN VALUE This call returns the CS_OK value if successful. CS_ERR_BAD_HANDLE error is returned when handle is invalid. .SH "SEE ALSO" .BR cpg_iteration_initialize (3), .BR cpg_overview (8) diff --git a/man/cpg_mcast_joined.3.in b/man/cpg_mcast_joined.3.in index dc02350d..3ba44df8 100644 --- a/man/cpg_mcast_joined.3.in +++ b/man/cpg_mcast_joined.3.in @@ -1,141 +1,141 @@ .\"/* .\" * Copyright (c) 2006 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Patrick Caulfield .\" * .\" * 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 CPG_MCAST_JOINED 3 3004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.TH CPG_MCAST_JOINED 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME cpg_mcast_joined \- Multicasts to all groups joined to a handle .SH SYNOPSIS .B #include .B #include .sp .BI "int cpg_mcast_joined(cpg_handle_t " handle ", cpg_guarantee_t " guarantee ", struct iovec *" iovec ", int " iov_len "); .SH DESCRIPTION The .B cpg_mcast_joined function will multicast a message to all the processes that have been joined with the .B cpg_join(3) function for the same group name. Messages that are sent to any of the groups joined to the parameter .I handle will be delivered to all subscribed processes in the system. .PP The argument .I guarantee requests a delivery guarantee for the message to be sent. The cpg_guarantee_t type is defined by: .IP .RS .ne 18 .nf .ta 4n 30n 33n typedef enum { CPG_TYPE_UNORDERED, /* not implemented */ CPG_TYPE_FIFO, /* same as agreed */ CPG_TYPE_AGREED, /* implemented */ CPG_TYPE_SAFE /* not implemented */ } cpg_guarantee_t; .ta .fi .RE .IP .PP .PP The meanings of the cpg_guarantee_t typedef are: .TP .B CPG_TYPE_UNORDERED Messages are guaranteed to be delivered, but with no particular order. This mode is unimplemented in the CPG library. .TP .B CPG_TYPE_FIFO Messages are guaranteed to be delivered in first sent first delivery order. In fact, this guarantee is equivalent to the CPG_TYPE_AGREED guarantee. .TP .B CPG_TYPE_AGREED All processors must agree on the order of delivery. If a message is sent from two or more processes at about the same time, the delivery will occur in the same order to all processes. .TP .B CPG_TYPE_SAFE All processes must agree on the order of delivery. Further all processes must have a copy of the message before any delivery takes place. This mode is unimplemented in the CPG library. .PP The .I iovec argument describes the scatter/gather list which is used to transmit a message. This is a iovec described by: .IP .RS .ne 18 .nf .ta 4n 30n 33n struct iovec { void *iov_base; /* Pointer to data. */ unsigned int iov_len; /* Length of data. */ }; .ta .fi .RE .IP .PP .PP The .I iov_len argument describes the number of entires in the .I iovec argument. .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 cpg_overview (8), .BR cpg_initialize (3), .BR cpg_finalize (3), .BR cpg_fd_get (3), .BR cpg_dispatch (3), .BR cpg_join (3), .BR cpg_leave (3), .BR cpg_mcast_joined (3), .BR cpg_membership_get (3) .BR cpg_zcb_alloc (3) .BR cpg_zcb_free (3) .BR cpg_zcb_mcast_joined (3) .BR cpg_context_get (3) .BR cpg_context_set (3) .BR cpg_local_get (3) .PP diff --git a/man/cpg_model_initialize.3.in b/man/cpg_model_initialize.3.in index 259f77d5..76429a56 100644 --- a/man/cpg_model_initialize.3.in +++ b/man/cpg_model_initialize.3.in @@ -1,231 +1,231 @@ .\"/* .\" * Copyright (c) 2010 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse .\" * Author: Christine Caulfield .\" * .\" * 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 CPG_MODEL_INITIALIZE 3 2010-04-07 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME cpg_model_initialize \- Create a new connection to the CPG service .SH SYNOPSIS .B #include .sp .BI "cs_error_t cpg_model_initialize(cpg_handle_t *" handle ", cpg_model_t " model ", cpg_model_data_t *" model_data ", void *" context "); .SH DESCRIPTION The .B cpg_model_initialize function is used to initialize a connection to the closed process groups API. .PP -Each application may have several connections to the CPG API. Each application +Each application may have several connections to the CPG API. Each application uses the .I handle argument to uniquely identify the connection. The .I handle argument is then used in other function calls to identify the connection to be used for communication with the CPG service. .PP Argument .I model is used to explicitly choose set of callbacks and internal parameters. Currently only model .I CPG_MODEL_V1 is defined. .PP Callbacks and internal parameters are passed by .I model_data argument. This is casted pointer (idea is similar as in sockaddr function) to one of structures corresponding to chosen model. Currently only .I cpg_model_v1_data_t is needed. .SH MODEL_V1 The .I MODEL_V1 is backwards compatible with original callbacks initialized by .I cpg_initialize but new callback .I cpg_totem_confchg_fn is defined. .PP Every time an CPG event occurs within the joined group, one of the callbacks specified by the argument .I callbacks is called. The callback functions are described by the following type definitions: .PP .PP .IP .RS .ne 18 .nf .ta 4n 20n 32n typedef void (*cpg_deliver_fn_t) ( cpg_handle_t handle, const struct cpg_name *group_name, uint32_t nodeid, uint32_t pid, const void *msg, size_t msg_len); typedef void (*cpg_confchg_fn_t) ( cpg_handle_t handle, const struct cpg_name *group_name, const struct cpg_address *member_list, size_t member_list_entries, const struct cpg_address *left_list, size_t left_list_entries, const struct cpg_address *joined_list, size_t joined_list_entries); typedef void (*cpg_totem_confchg_fn_t) ( cpg_handle_t handle, struct cpg_ring_id ring_id, uint32_t member_list_entries, const uint32_t *member_list); .ta .fi .RE .IP .PP .PP The .I cpg_model_v1_data_t structure is defined as: .IP .RS .ne 18 .nf .PP typedef struct { cpg_model_t model; cpg_deliver_fn_t cpg_deliver_fn; cpg_confchg_fn_t cpg_confchg_fn; cpg_totem_confchg_fn_t cpg_totem_confchg_fn; unsigned int flags; } cpg_model_v1_data_t; .ta .fi .RE .IP .PP When a configuration change occurs or a message is to be delivered one of the callbacks is called from the .B cpg_dispatch() function. If a configuration change occurs, .I cpg_confchg_fn is called. If a delivery of a message occurs, .I cpg_deliver_fn is called. When totem membership change occurs, .I cpg_totem_confchg_fn is called. You can OR .I CPG_MODEL_V1_DELIVER_INITIAL_TOTEM_CONF constant to flags to get callback after first confchg event. The .I cpg_address structure is defined .IP .RS .ne 18 .nf .PP struct cpg_address { unsigned int nodeid; unsigned int pid; unsigned int reason; }; .ta .fi .RE .IP .PP where nodeid is a 32 bit unique node identifier, pid is the process ID of the process that has joined/left the group or sent the message, and reason is an integer code indicating why the node joined/left the group. .PP .IP .RS .ne 18 .nf .PP CPG_REASON_JOIN - the process joined a group using cpg_join(). CPG_REASON_LEAVE - the process left a group using cpg_leave() CPG_REASON_NODEDOWN - the process left a group because the node left the cluster. CPG_REASON_NODEUP - the process joined a group because it was already a member of a group on a node that has just joined the cluster CPG_REASON_PROCDOWN - the process left a group without calling cpg_leave() .ta .fi .RE .IP .PP The .I cpg_ring_id structure is defined .IP .RS .ne 18 .nf .PP struct cpg_ring_id { uint32_t nodeid; uint64_t seq; }; .ta .fi .RE .IP .PP where .I nodeid is if of node of current Totem leader and seq is increasing number. .PP .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 cpg_overview (8), .BR cpg_initialize (3), .BR cpg_finalize (3), .BR cpg_fd_get (3), .BR cpg_dispatch (3), .BR cpg_join (3), .BR cpg_leave (3), .BR cpg_mcast_joined (3), .BR cpg_membership_get (3) .BR cpg_zcb_alloc (3) .BR cpg_zcb_free (3) .BR cpg_zcb_mcast_joined (3) .BR cpg_context_get (3) .BR cpg_context_set (3) .BR cpg_local_get (3) .BR cpg_model_initialize (3) .PP diff --git a/man/cpg_zcb_alloc.3.in b/man/cpg_zcb_alloc.3.in index e46da9ca..347be2c0 100644 --- a/man/cpg_zcb_alloc.3.in +++ b/man/cpg_zcb_alloc.3.in @@ -1,85 +1,85 @@ .\"/* .\" * Copyright (c) 2009 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Steven Dake .\" * .\" * 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 "CPG_ZCB_ALLOC" 3 "2009-04-15" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME cpg_zcb_alloc \- Allocates a zero copy buffer .SH SYNOPSIS .B #include .sp .BI "int cpg_zcb_alloc(cpg_handle_t " handle ", size_t " size ", void **" buffer "); .SH DESCRIPTION The .B cpg_zcb_alloc function will allocate a zero copy buffer for use with the .B cpg_zcb_mcast_joined(3) function. This buffer should not be used in another thread while a cpg_zcb_mcast_joined operation is taking place on the buffer. The buffer is allocated via operating system mechanisms to avoid copying in the IPC layer. .PP The argument .I handle describes the handle on which the buffer will be allocated. .PP The argument .I size requests a buffer of size be allocated. .PP The .I buffer -argument is set to the buffer address that is allocated by this operatoin. +argument is set to the buffer address that is allocated by this operation. .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 cpg_overview (8), .BR cpg_initialize (3), .BR cpg_finalize (3), .BR cpg_fd_get (3), .BR cpg_dispatch (3), .BR cpg_join (3), .BR cpg_leave (3), .BR cpg_mcast_joined (3), .BR cpg_membership_get (3) .BR cpg_zcb_alloc (3) .BR cpg_zcb_free (3) .BR cpg_zcb_mcast_joined (3) .BR cpg_context_get (3) .BR cpg_context_set (3) .BR cpg_local_get (3) .PP diff --git a/man/cpg_zcb_mcast_joined.3.in b/man/cpg_zcb_mcast_joined.3.in index 158131c2..afb44549 100644 --- a/man/cpg_zcb_mcast_joined.3.in +++ b/man/cpg_zcb_mcast_joined.3.in @@ -1,127 +1,127 @@ .\"/* .\" * Copyright (c) 2009 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Steven Dake .\" * .\" * 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 CPG_ZCB_MCAST_JOINED 3 3004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.TH CPG_ZCB_MCAST_JOINED 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME cpg_mcast_joined \- Multicasts a zero copy buffer to all groups joined to a handle .SH SYNOPSIS .B #include .B #include .sp .BI "int cpg_zcb_mcast_joined(cpg_handle_t " handle ", cpg_guarantee_t " guarantee ", const void *" buffer "", int " msg_len "); .SH DESCRIPTION The .B cpg_zcb_mcast_joined function will multicast a zero copy buffer message to all the processes that have been joined with the .B cpg_join(3) function for the same group name. Messages that are sent to any of the groups joined to the parameter .I handle will be delivered to all subscribed processes in the system. .PP The argument .I guarantee requests a delivery guarantee for the message to be sent. The cpg_guarantee_t type is defined by: .IP .RS .ne 18 .nf .ta 4n 30n 33n typedef enum { CPG_TYPE_UNORDERED, /* not implemented */ CPG_TYPE_FIFO, /* same as agreed */ CPG_TYPE_AGREED, /* implemented */ CPG_TYPE_SAFE /* not implemented */ } cpg_guarantee_t; .ta .fi .RE .IP .PP .PP The meanings of the cpg_guarantee_t typedef are: .TP .B CPG_TYPE_UNORDERED Messages are guaranteed to be delivered, but with no particular order. This mode is unimplemented in the CPG library. .TP .B CPG_TYPE_FIFO Messages are guaranteed to be delivered in first sent first delivery order. In fact, this guarantee is equivalent to the CPG_TYPE_AGREED guarantee. .TP .B CPG_TYPE_AGREED All processors must agree on the order of delivery. If a message is sent from two or more processes at about the same time, the delivery will occur in the same order to all processes. .TP .B CPG_TYPE_SAFE All processes must agree on the order of delivery. Further all processes must have a copy of the message before any delivery takes place. This mode is unimplemented in the CPG library. .PP The .I msg argument describes the zero copy buffer which is used to transmit a message. this buffer must be allocated by .B cpg_zcb_alloc(3). .PP The .I msg_len argument describes the number of bytes to be transmitted in the zero copy buffer. .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 cpg_overview (8), .BR cpg_initialize (3), .BR cpg_finalize (3), .BR cpg_fd_get (3), .BR cpg_dispatch (3), .BR cpg_join (3), .BR cpg_leave (3), .BR cpg_mcast_joined (3), .BR cpg_membership_get (3) .BR cpg_zcb_alloc (3) .BR cpg_zcb_free (3) .BR cpg_zcb_mcast_joined (3) .BR cpg_context_get (3) .BR cpg_context_set (3) .BR cpg_local_get (3) .PP diff --git a/man/ipc_common.sh.errors b/man/ipc_common.sh.errors index 0c733582..55d45107 100644 --- a/man/ipc_common.sh.errors +++ b/man/ipc_common.sh.errors @@ -1,25 +1,25 @@ .PP .B CS_ERR_TRY_AGAIN Resource temporarily unavailable .B CS_ERR_INVALID_PARAM Invalid argument .B CS_ERR_ACCESS Permission denied .B CS_ERR_LIBRARY The connection failed .B CS_ERR_INTERRUPT -System call inturrupted by a signal +System call interrupted by a signal .B CS_ERR_NOT_SUPPORTED -The requested protocol/functuality not supported +The requested protocol/functionality not supported .B CS_ERR_MESSAGE_ERROR Incorrect auth message received .B CS_ERR_NO_MEMORY -Not enough memory to completed the requested task +Not enough memory to complete the requested task diff --git a/man/quorum_context_set.3.in b/man/quorum_context_set.3.in index 6a57e928..57fe35c1 100644 --- a/man/quorum_context_set.3.in +++ b/man/quorum_context_set.3.in @@ -1,63 +1,63 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Fabio M. Di Nitto .\" * .\" * 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 QUORUM_CONTEXT_SET 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME quorum_context_set \- Sets the context variable for a QUORUM instance .SH SYNOPSIS .B #include .sp .BI "int quorum_context_set(quorum_handle_t " handle ", void *" context ");" .SH DESCRIPTION The .B quorum_context_set function is used to set the context variable for a quorum instance. It has no -meaning insire libquorum itself and will not be touched by the library. It can +meaning inside libquorum itself and will not be touched by the library. It can be retrieved using .B quorum_context_get(3) .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .PP .SH ERRORS @COMMONIPCERRORS@ .SH "SEE ALSO" .BR quorum_overview (8), .BR quorum_initialize (3), .BR quorum_finalize (3), .BR quorum_getquorate (3), .BR quorum_trackstart (3), .BR quorum_trackstop (3), .BR quorum_fd_get (3), .BR quorum_dispatch (3), .BR quorum_context_get (3) .PP diff --git a/man/quorum_dispatch.3.in b/man/quorum_dispatch.3.in index 34d99080..319e4606 100644 --- a/man/quorum_dispatch.3.in +++ b/man/quorum_dispatch.3.in @@ -1,97 +1,97 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Fabio M. Di Nitto .\" * .\" * 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 QUORUM_DISPATCH 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME quorum_dispatch \- Dispatches callbacks from the quorum service .SH SYNOPSIS .B #include .sp .BI "int quorum_dispatch(quorum_handle_t " handle ", cs_dispatch_flags_t *" dispatch_types ");" .SH DESCRIPTION The .B quorum_dispatch function is used to dispatch configuration changes. .PP -Each application may have several connections to the quorum API. Each application +Each application may have several connections to the quorum API. Each application uses the .I handle argument to uniquely identify the connection. .PP The .I dispatch_types argument is used to identify the type of dispatch to execute. The possible types are defined by the structure: .nf typedef enum { CS_DISPATCH_ONE = 1, CS_DISPATCH_ALL = 2, CS_DISPATCH_BLOCKING = 3, CS_DISPATCH_ONE_NONBLOCKING = 4 } cs_dispatch_flags_t; .fi .PP The dispatch values have the following meanings: .TP .B CS_DISPATCH_ONE Dispatch at least one callback, blocking until the callback is dispatched. .TP .B CS_DISPATCH_ALL Dispatch all waiting callbacks without blocking to wait for any callbacks. .TP .B CS_DISPATCH_BLOCKING Dispatch all callbacks blocking indefinitely. This is used in a threaded program where a thread is created, and then quorum_dispatch() is called immediately from the created thread to execute callbacks. .TP .B CS_DISPATCH_ONE_NONBLOCKING Dispatch at most one callback. If there is no pending callback, CS_ERR_TRY_AGAIN is returned. .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .PP .SH ERRORS @COMMONIPCERRORS@ .SH "SEE ALSO" .BR quorum_overview (8), .BR quorum_initialize (3), .BR quorum_finalize (3), .BR quorum_getquorate (3), .BR quorum_trackstart (3), .BR quorum_trackstop (3), .BR quorum_fd_get (3), .BR quorum_context_set (3), .BR quorum_context_get (3) .PP diff --git a/man/quorum_getquorate.3.in b/man/quorum_getquorate.3.in index ec87486b..b1c0c74b 100644 --- a/man/quorum_getquorate.3.in +++ b/man/quorum_getquorate.3.in @@ -1,61 +1,61 @@ .\"/* .\" * Copyright (c) 2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Fabio M. Di Nitto .\" * .\" * 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 QUORUM_GETQUORATE 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME quorum_getquorate \- Gets the quorate status of the node. .SH SYNOPSIS .B #include .sp .BI "int quorum_getquorate(quorum_handle_t " handle ", int *" quorate ");" .SH DESCRIPTION The .B quorum_getquorate -function is used to retrieve the quorate status of the node. quorate is 0 if the node +function is used to retrieve the quorate status of the node. Quorate is 0 if the node is not part of a quorate partition or 1 otherwise. .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .PP .SH ERRORS @COMMONIPCERRORS@ .SH "SEE ALSO" .BR quorum_overview (8), .BR quorum_initialize (3), .BR quorum_finalize (3), .BR quorum_trackstart (3), .BR quorum_trackstop (3), .BR quorum_fd_get (3), .BR quorum_dispatch (3), .BR quorum_context_set (3), .BR quorum_context_get (3) .PP diff --git a/man/sam_data_store.3.in b/man/sam_data_store.3.in index 6e906513..88ab7aa0 100644 --- a/man/sam_data_store.3.in +++ b/man/sam_data_store.3.in @@ -1,83 +1,83 @@ .\"/* .\" * Copyright (c) 2010 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "SAM_DATA_STORE" 3 "04/15/2010" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P sam_data_store \- Store user data .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t sam_data_store (const void *\fIdata\fB, size_t \fIsize\fB);\fR .SH DESCRIPTION .P The \fBsam_data_store\fR function is used to store data, which survives between instances. .P The \fIdata\fR parameter is pointer to memory with data to store. Data are stored in newly allocated memory inside library, so caller can safely remove them after call of function. You can use NULL as parameter to remove and free previously saved data. In this case \fIsize\fR argument is ignored. .P The \fIsize\fR parameter is length of \fIdata\fR. Use \fBsam_data_getsize(3)\fR to find out length of stored data and \fBsam_data_restore(3)\fR to restore stored data. .SH RETURN VALUE .P This call return CS_OK value if successful, otherwise and error is returned. .SH ERRORS .TP CS_ERR_BAD_HANDLE component was not initialized by calling \fBsam_initialize(3)\fR or it was finalized. .TP CS_ERR_NO_MEMORY -internal malloc/realloc failed because data are too large +internal malloc/realloc failed because data are too large .TP CS_ERR_LIBRARY some internal error appeared (mostly because communication with parent process failed) .SH "SEE ALSO" .BR sam_data_getsize (3), .BR sam_data_restore (3) diff --git a/man/sam_hc_callback_register.3.in b/man/sam_hc_callback_register.3.in index 91be22d5..c9f5619e 100644 --- a/man/sam_hc_callback_register.3.in +++ b/man/sam_hc_callback_register.3.in @@ -1,89 +1,89 @@ .\"/* .\" * Copyright (c) 2009 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "SAM_HC_CALLBACK_REGISTER" 3 "12/01/2009" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P sam_hc_callback_register \- Register health check callback .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t sam_hc_callback_register (sam_hc_callback_t cb);\fR .SH DESCRIPTION .P The \fBsam_hc_callback_register\fR function is used to register a user provided healthcheck callback. After calling of this function, the SAM is switched from application driven healthchecking to event driven healthchecking. In this mode, \fBsam_hc_send(3)\fR does not need to be executed. .P The parameter \fIcb\fR is callback function of type \fIsam_hc_callback_t\fR defined as: .nf typedef int (*sam_hc_callback_t)(void); .fi .P -This function will be regulargly called and must return 0 if the process is +This function will be regularly called and must return 0 if the process is functioning normally, or -1 if the process is executing abnormally. When -1 is returned, the SAM server execute the registered recovery policy. .P A value of NULL can be passed into this function to switch into application driven healthchecking. \fIcb\fR to NULL. .SH RETURN VALUE .P This call return CS_OK value if successful, otherwise and error is returned. .SH ERRORS .TP CS_ERR_BAD_HANDLE SAM was not initialized and registered or health checking is in running state .TP CS_ERR_LIBRARY -internal library call failed. This can occur during fork() or pipe () system +internal library call failed. This can occur during fork() or pipe() system calls and the errno variable can be read to retrieve more information. .SH "SEE ALSO" .BR sam_start (3), .BR sam_stop (3), .BR sam_hc_send (3), .BR sam_register (3), diff --git a/man/sam_hc_send.3.in b/man/sam_hc_send.3.in index c8e9131f..dfcf93c0 100644 --- a/man/sam_hc_send.3.in +++ b/man/sam_hc_send.3.in @@ -1,68 +1,68 @@ .\"/* .\" * Copyright (c) 2009 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * .\" * 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 Red Hat, 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 "SAM_HC_SEND" 3 "12/01/2009" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P sam_hc_send \- Send health check confirmation .SH SYNOPSIS .P \fB#include \fR .P \fBcs_error_t sam_hc_send (void);\fR .SH DESCRIPTION .P The \fBsam_hc_send\fR function is used to send healthcheck confirmation from -the applicatoin. This function should be called reguarly when configured for -application driven healthchecking, otherwise recovery actoin will be taken. +the application. This function should be called regularly when configured for +application driven healthchecking, otherwise recovery action will be taken. When using event driven healthchecking, this function should not be used. .SH RETURN VALUE .P This call return CS_OK value if successful, otherwise and error is returned. .SH ERRORS .TP CS_ERR_BAD_HANDLE health checking is not in running state (\fBsam_start(3)\fR has not been executed) or function is called after stop/finalization of SAM. .SH "SEE ALSO" .BR sam_start (3), .BR sam_stop (3), .BR sam_hc_callback_register (3) diff --git a/man/sam_overview.8 b/man/sam_overview.8 index 490dbe4d..a0b23b43 100644 --- a/man/sam_overview.8 +++ b/man/sam_overview.8 @@ -1,181 +1,181 @@ .\"/* .\" * Copyright (c) 2009-2010 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Jan Friesse (jfriesse@redhat.com) .\" * Author: Steven Dake (sdake@redhat.com) .\" * .\" * 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 Red Hat, 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 "SAM_OVERVIEW" 8 "21/05/2010" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME .P sam_overview \- Overview of the Simple Availability Manager .SH OVERVIEW .P The SAM library provide a tool to check the health of an application. The main purpose of SAM is to restart a local process when it fails to respond to a healthcheck request in a configured time interval. .P During \fBsam_initialize(3)\fR, a duplicate copy of the process is created using the \fBfork(3)\fR system call. This duplicate process copy contains the logic for executing the SAM server. The SAM server is responsible for requesting healthchecks from the active process, and controlling the lifecycle of the active process when it fails. If the active process fails to respond to the healthcheck request sent by the SAM server, it will be sent a user configurable signal (default SIGTERM) to request shutdown of the application. After a configured time interval, the process will be forcibly killed by being sent a SIGKILL signal. Once the active process terminates, the SAM server will create a new active process. .P The Simple Availability Manager is meant to be used in conjunction with the cpg service. Used together, it is possible to restart a cpg process that fails healthchecking during operation. .P The main features of SAM include: .RS .IP \(bu 3 A configurable recovery policy. .IP \(bu 3 A configurable time interval for health check operations. .IP \(bu 3 A notification via signal before recovery action is taken. .IP \(bu 3 A mechanism to indicate to the application the number of times an active process has been created by the SAM server. .IP \(bu 3 Both application driven health checking and event driven health checking. .RE .SH Initializing SAM .P The SAM library is initialized by \fBsam_initialize(3)\fR. \fBsam_initalize(3)\fR may only be called once per process. Calling it more then once has undefined results and is not recommended or tested. .SH Setting warning callback .P User configurable signal (default \fISIGTERM\fR) is sent to the application when a recovery action is planned. The application can use the \fBsignal(3)\fR system call to monitor for this signal. .P There are no special constraints on what SAM apis may be called in a warning callback. After \fItime_interval\fR expires, a SIGKILL signal is sent to the active process to force its termination. .SH Registering the active process .P The active process is registered with SAM by calling \fBsam_register(3)\fR. This function should only be called one time in a process. After a recovery action is taken, the new active process will begin execution at the next line of code in a user process after \fBsam_register(3)\fR. .SH Enabling event driven healthchecking .P Two types of healthchecking are available to the user. The first model is one where the user application healthchecks during its normal operation. It is never requested to healtcheck, and if the active process doesn't respond within the time interval, the process will be restarted. .P A more useful mechanism for healthchecking is event driven healthchecking. Because this model is directed by the SAM server, It isn't necessary to guess or add timers to the active process to signal a healthcheck operation is successful. To use event driven healthchecking, the \fBsam_hc_callback_register(3)\fR function should be executed. .SH Quorum integration .P SAM has special policies (\fISAM_RECOVERY_POLICY_QUIT\fR and \fISAM_RECOVERY_POLICY_RESTART\fR) for integration with quorum service. This policies changes SAM behaviour in two aspects. .RS .IP \(bu 3 Call of \fBsam_start(3)\fR blocks until corosync becomes quorate .IP \(bu 3 User selected recovery action is taken immediately after lost of quorum. .RE .SH Storing user data .P Sometimes there is need to store some data, which survives between instances. One can in such case use files, databases, ... or much simpler in memory solution presented by \fBsam_data_store(3)\fR, \fBsam_data_restore(3)\fR and \fBsam_data_getsize(3)\fR functions. .SH Confdb integration .P SAM has policy flag used for confdb system integration (\fISAM_RECOVERY_POLICY_CONFDB\fR). If process is registered with this flag, new confdb object PROCESS_NAME:PID is created with following keys: .RS .IP \(bu 3 \fIrecovery\fR - will be quit or restart depending on policy .IP \(bu 3 \fIpoll_period\fR - period of health checking in milliseconds .IP \(bu 3 \fIlast_updated\fR - Timestamp (in nanoseconds) of the last health check. .IP \(bu 3 \fIstate\fR - state of process (can be one of registered, started, failed, waiting for quorum) .RE .P Object is automatically deleted if process exits with stopped health checking. .P -Confdb integration with corosync wathdog can be used in implicit and explicit way. +Confdb integration with corosync watchdog can be used in implicit and explicit way. .P Implicit way is achieved by setting recovery policy to QUIT and let process exit with started health checking. If this happened, object is not deleted and corosync watchdog will take required action. .P Explicit way is useful for situations, when developer can deal with some non-fatal fall of application. This mode is achieved by setting policy to RESTART and using SAM same as without Confdb integration. If real fail is needed (like too many restarts at all, per/sec, ...), it's possible to use \fBsam_mark_failed(3)\fR and let corosync watchdog take required action. .SH BUGS .SH "SEE ALSO" .BR sam_initialize (3), .BR sam_data_getsize (3), .BR sam_data_restore (3), .BR sam_data_store (3), .BR sam_finalize (3), .BR sam_mark_failed (3), .BR sam_start (3), .BR sam_stop (3), .BR sam_register (3), .BR sam_warn_signal_set (3), .BR sam_hc_send (3), .BR sam_hc_callback_register (3) diff --git a/man/votequorum.5 b/man/votequorum.5 index ee4814a2..fd9590e6 100644 --- a/man/votequorum.5 +++ b/man/votequorum.5 @@ -1,409 +1,409 @@ .\"/* .\" * Copyright (c) 2012-2014 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Authors: Christine Caulfield .\" * Fabio M. Di Nitto .\" * .\" * 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 5 2012-01-24 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME votequorum \- Votequorum Configuration Overview .SH OVERVIEW The votequorum service is part of the corosync project. This service can be optionally loaded into the nodes of a corosync cluster to avoid split-brain situations. It does this by having a number of votes assigned to each system in the cluster and ensuring that only when a majority of the votes are present, cluster operations are allowed to proceed. The service must be loaded into all nodes or none. If it is loaded into a subset of cluster nodes the results will be unpredictable. .PP The following corosync.conf extract will enable votequorum service within corosync: .PP .nf quorum { provider: corosync_votequorum } .fi .PP votequorum reads its configuration from corosync.conf. Some values can be changed at runtime, others are only read at corosync startup. It is very important that those values are consistent across all the nodes participating in the cluster or votequorum behavior will be unpredictable. .PP votequorum requires an expected_votes value to function, this can be provided in two ways. The number of expected votes will be automatically calculated when the nodelist { } section is present in corosync.conf or expected_votes can be specified in the quorum { } section. Lack of both will disable votequorum. If both are present at the same time, the quorum.expected_votes value will override the one calculated from the nodelist. .PP Example (no nodelist) of an 8 node cluster (each node has 1 vote): .nf quorum { provider: corosync_votequorum expected_votes: 8 } .fi .PP Example (with nodelist) of a 3 node cluster (each node has 1 vote): .nf quorum { provider: corosync_votequorum } nodelist { node { ring0_addr: 192.168.1.1 } node { ring0_addr: 192.168.1.2 } node { ring0_addr: 192.168.1.3 } } .fi .SH SPECIAL FEATURES .PP .B two_node: 1 .PP Enables two node cluster operations (default: 0). .PP The "two node cluster" is a use case that requires special consideration. With a standard two node cluster, each node with a single vote, there are 2 votes in the cluster. Using the simple majority calculation (50% of the votes + 1) to calculate quorum, the quorum would be 2. This means that the both nodes would always have to be alive for the cluster to be quorate and operate. .PP Enabling two_node: 1, quorum is set artificially to 1. .PP Example configuration 1: .nf quorum { provider: corosync_votequorum expected_votes: 2 two_node: 1 } .fi .PP Example configuration 2: .nf quorum { provider: corosync_votequorum two_node: 1 } nodelist { node { ring0_addr: 192.168.1.1 } node { ring0_addr: 192.168.1.2 } } .fi .PP NOTES: enabling two_node: 1 automatically enables wait_for_all. It is still possible to override wait_for_all by explicitly setting it to 0. If more than 2 nodes join the cluster, the two_node option is automatically disabled. .PP .B wait_for_all: 1 .PP Enables Wait For All (WFA) feature (default: 0). .PP The general behaviour of votequorum is to switch a cluster from inquorate to quorate as soon as possible. For example, in an 8 node cluster, where every node has 1 vote, expected_votes is set to 8 and quorum is (50% + 1) 5. As soon as 5 (or more) nodes are visible to each other, the partition of 5 (or more) becomes quorate and can start operating. .PP When WFA is enabled, the cluster will be quorate for the first time only after all nodes have been visible at least once at the same time. .PP This feature has the advantage of avoiding some startup race conditions, with the cost that all nodes need to be up at the same time at least once before the cluster can operate. .PP A common startup race condition based on the above example is that as soon as 5 nodes become quorate, with the other 3 still offline, the remaining 3 nodes will be fenced. .PP It is very useful when combined with last_man_standing (see below). .PP Example configuration: .nf quorum { provider: corosync_votequorum expected_votes: 8 wait_for_all: 1 } .fi .PP .B last_man_standing: 1 / .B last_man_standing_window: 10000 .PP Enables Last Man Standing (LMS) feature (default: 0). Tunable last_man_standing_window (default: 10 seconds, expressed in ms). .PP The general behaviour of votequorum is to set expected_votes and quorum at startup (unless modified by the user at runtime, see below) and use those values during the whole lifetime of the cluster. .PP Using for example an 8 node cluster where each node has 1 vote, expected_votes is set to 8 and quorum to 5. This condition allows a total failure of 3 nodes. If a 4th node fails, the cluster becomes inquorate and it will stop providing services. .PP Enabling LMS allows the cluster to dynamically recalculate expected_votes and quorum under specific circumstances. It is essential to enable WFA when using LMS in High Availability clusters. .PP Using the above 8 node cluster example, with LMS enabled the cluster can retain quorum and continue operating by losing, in a cascade fashion, up to 6 nodes with only 2 remaining active. .PP Example chain of events: .nf 1) cluster is fully operational with 8 nodes. (expected_votes: 8 quorum: 5) 2) 3 nodes die, cluster is quorate with 5 nodes. 3) after last_man_standing_window timer expires, expected_votes and quorum are recalculated. (expected_votes: 5 quorum: 3) 4) at this point, 2 more nodes can die and cluster will still be quorate with 3. 5) once again, after last_man_standing_window timer expires expected_votes and quorum are recalculated. (expected_votes: 3 quorum: 2) 6) at this point, 1 more node can die and cluster will still be quorate with 2. 7) one more last_man_standing_window timer (expected_votes: 2 quorum: 2) .fi .PP NOTES: In order for the cluster to downgrade automatically from 2 nodes to a 1 node cluster, the auto_tie_breaker feature must also be enabled (see below). -If auto_tie_breaker is not enabled, and one more failure occours, the +If auto_tie_breaker is not enabled, and one more failure occurs, the remaining node will not be quorate. LMS does not work with asymmetric voting schemes, each node must vote 1. LMS is also incompatible with quorum devices, if last_man_standing is specified in corosync.conf then the quorum device will be disabled. .PP Example configuration 1: .nf quorum { provider: corosync_votequorum expected_votes: 8 last_man_standing: 1 } .fi .PP Example configuration 2 (increase timeout to 20 seconds): .nf quorum { provider: corosync_votequorum expected_votes: 8 last_man_standing: 1 last_man_standing_window: 20000 } .fi .PP .B auto_tie_breaker: 1 .PP Enables Auto Tie Breaker (ATB) feature (default: 0). .PP The general behaviour of votequorum allows a simultaneous node failure up to 50% - 1 node, assuming each node has 1 vote. .PP When ATB is enabled, the cluster can suffer up to 50% of the nodes failing at the same time, in a deterministic fashion. By default the cluster partition, or the set of nodes that are still in contact with the node that has the lowest nodeid will remain quorate. The other nodes will be inquorate. This behaviour can be changed by also specifying .PP .B auto_tie_breaker_node: lowest|highest| .PP \'lowest' is the default, 'highest' is similar in that if the current set of nodes contains the highest nodeid then it will remain quorate. Alternatively it is possible to specify a particular node ID or list of node IDs that will be required to maintain quorum. If a (space-separated) list is given, the nodes are evaluated in order, so if the first node is present then it will be used to determine the quorate partition, if that node is not in either half (ie was not in the cluster before the split) then the second node ID will be checked for and so on. ATB is incompatible with quorum devices - if auto_tie_breaker is specified in corosync.conf then the quorum device will be disabled. .PP Example configuration 1: .nf quorum { provider: corosync_votequorum expected_votes: 8 auto_tie_breaker: 1 auto_tie_breaker_node: lowest } .fi .PP Example configuration 2: .nf quorum { provider: corosync_votequorum expected_votes: 8 auto_tie_breaker: 1 auto_tie_breaker_node: 1 3 5 } .PP .fi .PP .B allow_downscale: 1 .PP Enables allow downscale (AD) feature (default: 0). .PP THIS FEATURE IS INCOMPLETE AND CURRENTLY UNSUPPORTED. .PP The general behaviour of votequorum is to never decrease expected votes or quorum. .PP When AD is enabled, both expected votes and quorum are recalculated when a node leaves the cluster in a clean state (normal corosync shutdown process) down to configured expected_votes. .PP Example use case: .PP .nf 1) N node cluster (where N is any value higher than 3) 2) expected_votes set to 3 in corosync.conf 3) only 3 nodes are running 4) admin requires to increase processing power and adds 10 nodes 5) internal expected_votes is automatically set to 13 6) minimum expected_votes is 3 (from configuration) - up to this point this is standard votequorum behavior - 7) once the work is done, admin wants to remove nodes from the cluster 8) using an ordered shutdown the admin can reduce the cluster size automatically back to 3, but not below 3, where normal quorum operation will work as usual. .fi .PP Example configuration: .nf quorum { provider: corosync_votequorum expected_votes: 3 allow_downscale: 1 } .fi allow_downscale implicitly enabled EVT (see below). .PP .B expected_votes_tracking: 1 .PP Enables Expected Votes Tracking (EVT) feature (default: 0). .PP Expected Votes Tracking stores the highest-seen value of expected votes on disk and uses that as the minimum value for expected votes in the absence of any higher authority (eg a current quorate cluster). This is useful for when a group of nodes becomes detached from the main cluster and after a restart could have enough votes to provide quorum, which can happen after using allow_downscale. .PP Note that even if the in-memory version of expected_votes is reduced, eg by removing nodes or using corosync-quorumtool, the stored value will still be the highest value seen - it never gets reduced. .PP The value is held in the file /var/lib/corosync/ev_tracking which can be deleted if you really do need to reduce the expected votes for any reason, like the node has been moved to a different cluster. .PP .fi .PP .SH VARIOUS NOTES .PP * WFA / LMS / ATB / AD can be used combined together. .PP * In order to change the default votes for a node there are two options: .nf 1) nodelist: nodelist { node { ring0_addr: 192.168.1.1 quorum_votes: 3 } .... } 2) quorum section (deprecated): quorum { provider: corosync_votequorum expected_votes: 2 votes: 2 } .fi In the event that both nodelist and quorum { votes: } are defined, the value from the nodelist will be used. .PP * Only votes, quorum_votes, expected_votes and two_node can be changed at runtime. Everything else requires a cluster restart. .SH BUGS No known bugs at the time of writing. The authors are from outerspace. Deal with it. .SH "SEE ALSO" .BR corosync (8), .BR corosync.conf (5), .BR corosync-quorumtool (8), .BR corosync-qdevice (8), .BR votequorum_overview (8) .PP diff --git a/man/votequorum_context_set.3.in b/man/votequorum_context_set.3.in index df3af2b3..56c6cf0d 100644 --- a/man/votequorum_context_set.3.in +++ b/man/votequorum_context_set.3.in @@ -1,66 +1,66 @@ .\"/* .\" * Copyright (c) 2007,2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Patrick Caulfield .\" * .\" * 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_CONTEXT_SET 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME votequorum_context_set \- Sets the context variable for a VOTEQUORUM instance .SH SYNOPSIS .B #include .sp .BI "int votequorum_context_set(votequorum_handle_t " handle ", void *" context ");" .SH DESCRIPTION The .B votequorum_context_set function is used to set the context variable for a votequorum instance. It has no -meaning insire libvotequorum itself and will not be touched by the library. It can +meaning inside libvotequorum itself and will not be touched by the library. It can be retrieved using .B votequorum_context_get(3) .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .PP .SH ERRORS @COMMONIPCERRORS@ .SH "SEE ALSO" .BR votequorum_overview (8), .BR votequorum_initialize (3), .BR votequorum_finalize (3), .BR votequorum_getinfo (3), .BR votequorum_trackstart (3), .BR votequorum_trackstop (3), .BR votequorum_fd_get (3), .BR votequorum_dispatch (3), .BR votequorum_context_set (3), .BR votequorum_context_get (3), .BR votequorum_setexpected (3), .BR votequorum_setvotes (3) .PP diff --git a/man/votequorum_dispatch.3.in b/man/votequorum_dispatch.3.in index 38677b4f..132c8d18 100644 --- a/man/votequorum_dispatch.3.in +++ b/man/votequorum_dispatch.3.in @@ -1,99 +1,99 @@ .\"/* .\" * Copyright (c) 2009,2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Christine Caulfield .\" * .\" * 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_DISPATCH 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME votequorum_dispatch \- Dispatches callbacks from the votequorum service .SH SYNOPSIS .B #include .sp .BI "int votequorum_dispatch(votequorum_handle_t " handle ", cs_dispatch_flags_t *" dispatch_types ");" .SH DESCRIPTION The .B votequorum_dispatch function is used to dispatch configuration changes. .PP -Each application may have several connections to the votequorum API. Each application +Each application may have several connections to the votequorum API. Each application uses the .I handle argument to uniquely identify the connection. .PP The .I dispatch_types argument is used to identify the type of dispatch to execute. The possible types are defined by the structure: .nf typedef enum { CS_DISPATCH_ONE = 1, CS_DISPATCH_ALL = 2, CS_DISPATCH_BLOCKING = 3, CS_DISPATCH_ONE_NONBLOCKING = 4 } cs_dispatch_flags_t; .fi .PP The dispatch values have the following meanings: .TP .B CS_DISPATCH_ONE Dispatch at least one callback, blocking until the callback is dispatched. .TP .B CS_DISPATCH_ALL Dispatch all waiting callbacks without blocking to wait for any callbacks. .TP .B CS_DISPATCH_BLOCKING Dispatch all callbacks blocking indefinitely. This is used in a threaded program where a thread is created, and then quorum_dispatch() is called immediately from the created thread to execute callbacks. .TP .B CS_DISPATCH_ONE_NONBLOCKING Dispatch at most one callback. If there is no pending callback, CS_ERR_TRY_AGAIN is returned. .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .PP .SH ERRORS @COMMONIPCERRORS@ .SH "SEE ALSO" .BR votequorum_overview (8), .BR votequorum_initialize (3), .BR votequorum_finalize (3), .BR votequorum_getinfo (3), .BR votequorum_trackstart (3), .BR votequorum_trackstop (3), .BR votequorum_fd_get (3), .BR votequorum_context_set (3), .BR votequorum_context_get (3), .BR votequorum_setexpected (3), .BR votequorum_setvotes (3) .PP diff --git a/man/votequorum_finalize.3.in b/man/votequorum_finalize.3.in index 0164f594..50e431fc 100644 --- a/man/votequorum_finalize.3.in +++ b/man/votequorum_finalize.3.in @@ -1,67 +1,67 @@ .\"/* .\" * Copyright (c) 2009,2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Christine Caulfield .\" * .\" * 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_FINALIZE 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME votequorum_finalize \- Terminate a connection to the votequorum service .SH SYNOPSIS .B #include .sp .BI "int votequorum_finalize(votequorum_handle_t " handle ");" .SH DESCRIPTION The .B votequorum_finalize -function is used to close a connection to the configuration dabatase API. +function is used to close a connection to the configuration database API. Once the connection is finalized, the handle may not be used again by applications. No more callbacks will be dispatched from the .B votequorum_dispatch function. .PP .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .PP .SH ERRORS @COMMONIPCERRORS@ .SH "SEE ALSO" .BR votequorum_overview (8), .BR votequorum_initialize (3), .BR votequorum_getinfo (3), .BR votequorum_trackstart (3), .BR votequorum_trackstop (3), .BR votequorum_fd_get (3), .BR votequorum_dispatch (3), .BR votequorum_context_set (3), .BR votequorum_context_get (3), .BR votequorum_setexpected (3), .BR votequorum_setvotes (3) .PP diff --git a/man/votequorum_initialize.3.in b/man/votequorum_initialize.3.in index 811b3e38..88e1eb14 100644 --- a/man/votequorum_initialize.3.in +++ b/man/votequorum_initialize.3.in @@ -1,139 +1,139 @@ .\"/* .\" * Copyright (c) 2009,2012 Red Hat, Inc. .\" * .\" * All rights reserved. .\" * .\" * Author: Christine Caulfield .\" * .\" * 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_INITIALIZE 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" .SH NAME votequorum_initialize \- Create a new connection to the VoteQuorum service .SH SYNOPSIS .B #include .sp .BI "int votequorum_initialize(votequorum_handle_t *" handle ", votequorum_callbacks_t *" callbacks ");" .SH DESCRIPTION The .B votequorum_initialize function is used to initialize a connection to the vote-based quorum database API. .PP Each application may have several connections to the votequorum API. Each application uses the .I handle argument to uniquely identify the connection. The .I handle argument is then used in other function calls to identify the connection to be used for communication with the votequorum service. .PP Every time the voting configuration is about to change (eg a node joins or leave the cluster), the callback is called. The callback function is described by the following type definitions: .nf typedef void (*votequorum_nodelist_notification_fn_t) ( votequorum_handle_t handle, uint64_t context, uint32_t node_list_entries, uint32_t node_list[] ); .fi Current ring_id (one get in votequorum_quorum_notification_fn) must be passed to .B votequorum_qdevice_poll to make qdevice voting valid. .PP Every time the quorum state changes (eg a node joins or leave the cluster), the callback is called. The callback function is described by the following type definitions: .nf typedef void (*votequorum_quorum_notification_fn_t) ( votequorum_handle_t handle, uint64_t context, uint32_t quorate, uint32_t node_list_entries, votequorum_node_t node_list[] ); .fi The difference between votequorum_nodelist_notification_t and votequorum_quorum_notification_t is subtle but important. The 'nodelist' callback is sent at the start of a cluster state transition and contains the new ring_id and only the list of nodes that are included in the sync state - ie only active nodes. No quorum information is included this callback because it is not available at that time. The 'quorum' callback is sent after the cluster state transition has completed and does contain quorum information. In addition, the nodelist contains a list of all nodes known to votequorum (whether up or down) and their state as well -as information about the quorum device attached (if any). quorum callbacks will not be sent for qdevice up and down +as information about the quorum device attached (if any). Quorum callbacks will not be sent for qdevice up and down events unless they affect quorum. .PP Every time the expected votes are changed, the callback is called. The expected votes callback function is described by the following type definitions: .nf typedef void (*votequorum_expectedvotes_notification_fn_t) ( votequorum_handle_t handle, uint64_t context, uint32_t expected_votes); .fi .PP The .I callbacks argument is of the type: .nf typedef struct { votequorum_quorum_notification_fn_t votequorum_quorum_notify_fn; votequorum_expectedvotes_notification_fn_t votequorum_expectedvotes_notify_fn; votequorum_nodelist_notification_fn_t votequorum_nodelist_notify_fn; } votequorum_callbacks_t; .fi .PP When a configuration change occurs, the callback is called from the .B votequorum_dispatch() function. .PP .SH RETURN VALUE This call returns the CS_OK value if successful, otherwise an error is returned. .SH ERRORS @COMMONIPCERRORS@ .SH "SEE ALSO" .BR votequorum_overview (8), .BR votequorum_finalize (3), .BR votequorum_getinfo (3), .BR votequorum_trackstart (3), .BR votequorum_trackstop (3), .BR votequorum_fd_get (3), .BR votequorum_dispatch (3), .BR votequorum_context_set (3), .BR votequorum_context_get (3), .BR votequorum_setexpected (3), .BR votequorum_setvotes (3) .PP