diff options
Diffstat (limited to 'man')
97 files changed, 11471 insertions, 0 deletions
diff --git a/man/Makefile.am b/man/Makefile.am new file mode 100644 index 0000000..a57af14 --- /dev/null +++ b/man/Makefile.am @@ -0,0 +1,189 @@ +# Copyright (c) 2004 MontaVista Software, Inc. +# Copyright (c) 2009, 2012, 2014 Red Hat, Inc. +# +# Authors: Steven Dake (sdake@redhat.com) +# Fabio M. Di Nitto (fdinitto@redhat.com) +# +# All rights reserved. +# +# 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. + +MAINTAINERCLEANFILES = Makefile.in + +xml_man = corosync-xmlproc.8 \ + corosync.xml.5 + +corosync_vqsim_man = corosync-vqsim.8 + +INDEX_HTML = index.html + +autogen_man = cpg_context_get.3 \ + cpg_context_set.3 \ + cpg_dispatch.3 \ + cpg_fd_get.3 \ + cpg_finalize.3 \ + cpg_initialize.3 \ + cpg_join.3 \ + cpg_leave.3 \ + cpg_local_get.3 \ + cpg_mcast_joined.3 \ + cpg_model_initialize.3 \ + cpg_zcb_mcast_joined.3 \ + cpg_zcb_alloc.3 \ + cpg_zcb_free.3 \ + cpg_membership_get.3 \ + cpg_iteration_finalize.3 \ + cpg_iteration_initialize.3 \ + cpg_iteration_next.3 \ + quorum_initialize.3 \ + quorum_model_initialize.3 \ + quorum_finalize.3 \ + quorum_fd_get.3 \ + quorum_dispatch.3 \ + quorum_context_get.3 \ + quorum_context_set.3 \ + quorum_getquorate.3 \ + quorum_trackstart.3 \ + quorum_trackstop.3 \ + votequorum_dispatch.3 \ + votequorum_fd_get.3 \ + votequorum_context_get.3 \ + votequorum_context_set.3 \ + votequorum_finalize.3 \ + votequorum_getinfo.3 \ + votequorum_initialize.3 \ + votequorum_setexpected.3 \ + votequorum_setvotes.3 \ + votequorum_trackstart.3 \ + votequorum_trackstop.3 \ + votequorum_qdevice_register.3 \ + votequorum_qdevice_unregister.3 \ + votequorum_qdevice_update.3 \ + votequorum_qdevice_master_wins.3 \ + votequorum_qdevice_poll.3 \ + sam_data_getsize.3 \ + sam_data_restore.3 \ + sam_data_store.3 \ + sam_finalize.3 \ + sam_hc_callback_register.3 \ + sam_hc_send.3 \ + sam_initialize.3 \ + sam_mark_failed.3 \ + sam_register.3 \ + sam_start.3 \ + sam_stop.3 \ + sam_warn_signal_set.3 \ + cmap_context_get.3 \ + cmap_dec.3 \ + cmap_iter_init.3 \ + cmap_get.3 \ + cmap_inc.3 \ + cmap_set.3 \ + cmap_iter_next.3 \ + cmap_delete.3 \ + cmap_iter_finalize.3 \ + cmap_finalize.3 \ + cmap_dispatch.3 \ + cmap_initialize.3 \ + cmap_initialize_map.3 \ + cmap_track_add.3 \ + cmap_context_set.3 \ + cmap_fd_get.3 \ + cmap_track_delete.3 + +autogen_common = ipc_common.sh.errors + +EXTRA_DIST = $(INDEX_HTML) \ + $(xml_man) \ + $(corosync_vqsim_man) \ + $(autogen_man:%=%.in) \ + $(autogen_common) + +man_MANS = $(autogen_man) + +dist_man_MANS = corosync.conf.5 \ + votequorum.5 \ + corosync.8 \ + corosync-cmapctl.8 \ + corosync-blackbox.8 \ + corosync-keygen.8 \ + corosync-cfgtool.8 \ + corosync-cpgtool.8 \ + corosync-notifyd.8 \ + corosync-quorumtool.8 \ + corosync_overview.7 \ + cpg_overview.3 \ + quorum_overview.3 \ + votequorum_overview.3 \ + sam_overview.3 \ + cmap_overview.3 \ + cmap_keys.7 + +if BUILD_VQSIM +dist_man_MANS += $(corosync_vqsim_man) +endif + +if INSTALL_XMLCONF +dist_man_MANS += $(xml_man) +endif + +HTML_DOCS = $(dist_man_MANS:%=%.html) $(man_MANS:%=%.html) + +# developer man page generation +%.3: %.3.in $(autogen_common) + @echo Generating $@ man page && \ + rm -f $@-t-t $@-t $@ && \ + DATE_FMT="%Y-%m-%d" && \ + SOURCE_DATE_EPOCH="$${SOURCE_DATE_EPOCH:-$$(date +%s)}" && \ + date="$$(date -u -d "@$$SOURCE_DATE_EPOCH" "+$$DATE_FMT" 2>/dev/null || date -u -r "$$SOURCE_DATE_EPOCH" "+$$DATE_FMT" 2>/dev/null || date -u "+$$DATE_FMT")" && \ + $(AWK) "{print}(\$$1 ~ /@COMMONIPCERRORS@/){exit 0}" ${top_srcdir}/man/$@.in > $@-t-t && \ + cat ${top_srcdir}/man/$(autogen_common) >> $@-t-t && \ + $(AWK) -v p=0 "(\$$1 ~ /@COMMONIPCERRORS@/){p = 1} {if(p==1)print}" ${top_srcdir}/man/$@.in >> $@-t-t && \ + cat $@-t-t | \ + $(SED) -e 's#@BUILDDATE@#'$$date'#g' \ + -e 's#@COMMONIPCERRORS@##g' \ + > $@-t && \ + rm -f $@-t-t && \ + mv $@-t $@ + +clean-local: + rm -rf $(HTML_DOCS) $(autogen_man) + +if BUILD_HTML_DOCS +%.html: % + $(GROFF) -mandoc -Thtml $^ > $@ + +install-data-local: + $(INSTALL) -d $(DESTDIR)/${docdir}/html + $(INSTALL) -m 644 ${srcdir}/$(INDEX_HTML) $(HTML_DOCS) $(DESTDIR)/${docdir}/html/ + +uninstall-local: + cd $(DESTDIR)/${docdir}/html && rm -f $(INDEX_HTML) $(HTML_DOCS) + rmdir $(DESTDIR)/${docdir}/html 2> /dev/null || : + +all-local: $(HTML_DOCS) +endif diff --git a/man/Makefile.in b/man/Makefile.in new file mode 100644 index 0000000..aff09fa --- /dev/null +++ b/man/Makefile.in @@ -0,0 +1,863 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (c) 2004 MontaVista Software, Inc. +# Copyright (c) 2009, 2012, 2014 Red Hat, Inc. +# +# Authors: Steven Dake (sdake@redhat.com) +# Fabio M. Di Nitto (fdinitto@redhat.com) +# +# All rights reserved. +# +# 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. +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@BUILD_VQSIM_TRUE@am__append_1 = $(corosync_vqsim_man) +@INSTALL_XMLCONF_TRUE@am__append_2 = $(xml_man) +subdir = man +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(dist_man_MANS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/lib/libcfg.verso $(top_srcdir)/lib/libcpg.verso \ + $(top_srcdir)/lib/libquorum.verso \ + $(top_srcdir)/lib/libsam.verso \ + $(top_srcdir)/lib/libvotequorum.verso \ + $(top_srcdir)/lib/libcmap.verso $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/corosync/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man3dir = $(mandir)/man3 +am__installdirs = "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man5dir)" \ + "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(man8dir)" +man5dir = $(mandir)/man5 +man7dir = $(mandir)/man7 +man8dir = $(mandir)/man8 +NROFF = nroff +MANS = $(dist_man_MANS) $(man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUGTOOL = @AUGTOOL@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASHPATH = @BASHPATH@ +BINDGEN = @BINDGEN@ +CARGO = @CARGO@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFG_SONAME = @CFG_SONAME@ +CFLAGS = @CFLAGS@ +CLIPPY = @CLIPPY@ +CMAP_SONAME = @CMAP_SONAME@ +COROSYSCONFDIR = @COROSYSCONFDIR@ +CPG_SONAME = @CPG_SONAME@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +GROFF = @GROFF@ +INITCONFIGDIR = @INITCONFIGDIR@ +INITDDIR = @INITDDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBQB_CFLAGS = @LIBQB_CFLAGS@ +LIBQB_LIBS = @LIBQB_LIBS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINT_FLAGS = @LINT_FLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOGDIR = @LOGDIR@ +LOGROTATEDIR = @LOGROTATEDIR@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +QUORUM_SONAME = @QUORUM_SONAME@ +RANLIB = @RANLIB@ +RUSTC = @RUSTC@ +RUSTDOC = @RUSTDOC@ +RUSTFMT = @RUSTFMT@ +RUST_FLAGS = @RUST_FLAGS@ +RUST_TARGET_DIR = @RUST_TARGET_DIR@ +SAM_SONAME = @SAM_SONAME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNMPCONFIG = @SNMPCONFIG@ +SNMP_LIBS = @SNMP_LIBS@ +SOMAJOR = @SOMAJOR@ +SOMICRO = @SOMICRO@ +SOMINOR = @SOMINOR@ +SONAME = @SONAME@ +STRIP = @STRIP@ +SYSTEMDDIR = @SYSTEMDDIR@ +VERSCRIPT_LDFLAGS = @VERSCRIPT_LDFLAGS@ +VERSION = @VERSION@ +VOTEQUORUM_SONAME = @VOTEQUORUM_SONAME@ +WITH_LIST = @WITH_LIST@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +corosyncrustver = @corosyncrustver@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +knet_CFLAGS = @knet_CFLAGS@ +knet_LIBS = @knet_LIBS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +libsystemd_CFLAGS = @libsystemd_CFLAGS@ +libsystemd_LIBS = @libsystemd_LIBS@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +nozzle_CFLAGS = @nozzle_CFLAGS@ +nozzle_LIBS = @nozzle_LIBS@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +statgrab_CFLAGS = @statgrab_CFLAGS@ +statgrab_LIBS = @statgrab_LIBS@ +statgrabge090_CFLAGS = @statgrabge090_CFLAGS@ +statgrabge090_LIBS = @statgrabge090_LIBS@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +MAINTAINERCLEANFILES = Makefile.in +xml_man = corosync-xmlproc.8 \ + corosync.xml.5 + +corosync_vqsim_man = corosync-vqsim.8 +INDEX_HTML = index.html +autogen_man = cpg_context_get.3 \ + cpg_context_set.3 \ + cpg_dispatch.3 \ + cpg_fd_get.3 \ + cpg_finalize.3 \ + cpg_initialize.3 \ + cpg_join.3 \ + cpg_leave.3 \ + cpg_local_get.3 \ + cpg_mcast_joined.3 \ + cpg_model_initialize.3 \ + cpg_zcb_mcast_joined.3 \ + cpg_zcb_alloc.3 \ + cpg_zcb_free.3 \ + cpg_membership_get.3 \ + cpg_iteration_finalize.3 \ + cpg_iteration_initialize.3 \ + cpg_iteration_next.3 \ + quorum_initialize.3 \ + quorum_model_initialize.3 \ + quorum_finalize.3 \ + quorum_fd_get.3 \ + quorum_dispatch.3 \ + quorum_context_get.3 \ + quorum_context_set.3 \ + quorum_getquorate.3 \ + quorum_trackstart.3 \ + quorum_trackstop.3 \ + votequorum_dispatch.3 \ + votequorum_fd_get.3 \ + votequorum_context_get.3 \ + votequorum_context_set.3 \ + votequorum_finalize.3 \ + votequorum_getinfo.3 \ + votequorum_initialize.3 \ + votequorum_setexpected.3 \ + votequorum_setvotes.3 \ + votequorum_trackstart.3 \ + votequorum_trackstop.3 \ + votequorum_qdevice_register.3 \ + votequorum_qdevice_unregister.3 \ + votequorum_qdevice_update.3 \ + votequorum_qdevice_master_wins.3 \ + votequorum_qdevice_poll.3 \ + sam_data_getsize.3 \ + sam_data_restore.3 \ + sam_data_store.3 \ + sam_finalize.3 \ + sam_hc_callback_register.3 \ + sam_hc_send.3 \ + sam_initialize.3 \ + sam_mark_failed.3 \ + sam_register.3 \ + sam_start.3 \ + sam_stop.3 \ + sam_warn_signal_set.3 \ + cmap_context_get.3 \ + cmap_dec.3 \ + cmap_iter_init.3 \ + cmap_get.3 \ + cmap_inc.3 \ + cmap_set.3 \ + cmap_iter_next.3 \ + cmap_delete.3 \ + cmap_iter_finalize.3 \ + cmap_finalize.3 \ + cmap_dispatch.3 \ + cmap_initialize.3 \ + cmap_initialize_map.3 \ + cmap_track_add.3 \ + cmap_context_set.3 \ + cmap_fd_get.3 \ + cmap_track_delete.3 + +autogen_common = ipc_common.sh.errors +EXTRA_DIST = $(INDEX_HTML) \ + $(xml_man) \ + $(corosync_vqsim_man) \ + $(autogen_man:%=%.in) \ + $(autogen_common) + +man_MANS = $(autogen_man) +dist_man_MANS = corosync.conf.5 votequorum.5 corosync.8 \ + corosync-cmapctl.8 corosync-blackbox.8 corosync-keygen.8 \ + corosync-cfgtool.8 corosync-cpgtool.8 corosync-notifyd.8 \ + corosync-quorumtool.8 corosync_overview.7 cpg_overview.3 \ + quorum_overview.3 votequorum_overview.3 sam_overview.3 \ + cmap_overview.3 cmap_keys.7 $(am__append_1) $(am__append_2) +HTML_DOCS = $(dist_man_MANS:%=%.html) $(man_MANS:%=%.html) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign man/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man3: $(dist_man_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS) $(man_MANS)'; \ + test -n "$(man3dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.3[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ + done; } + +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man3dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) +install-man5: $(dist_man_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS) $(man_MANS)'; \ + test -n "$(man5dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.5[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ + done; } + +uninstall-man5: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man5dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.5[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) +install-man7: $(dist_man_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS) $(man_MANS)'; \ + test -n "$(man7dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man7dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man7dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.7[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man7dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man7dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man7dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man7dir)" || exit $$?; }; \ + done; } + +uninstall-man7: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man7dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.7[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man7dir)'; $(am__uninstall_files_from_dir) +install-man8: $(dist_man_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS) $(man_MANS)'; \ + test -n "$(man8dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.8[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ + done; } + +uninstall-man8: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man8dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.8[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +@BUILD_HTML_DOCS_FALSE@all-local: +all-am: Makefile $(MANS) all-local +installdirs: + for dir in "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(man8dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +@BUILD_HTML_DOCS_FALSE@uninstall-local: +@BUILD_HTML_DOCS_FALSE@install-data-local: +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man3 install-man5 install-man7 install-man8 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-local uninstall-man + +uninstall-man: uninstall-man3 uninstall-man5 uninstall-man7 \ + uninstall-man8 + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local cscopelist-am ctags-am distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-man3 \ + install-man5 install-man7 install-man8 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-local uninstall-man uninstall-man3 \ + uninstall-man5 uninstall-man7 uninstall-man8 + + +# developer man page generation +%.3: %.3.in $(autogen_common) + @echo Generating $@ man page && \ + rm -f $@-t-t $@-t $@ && \ + DATE_FMT="%Y-%m-%d" && \ + SOURCE_DATE_EPOCH="$${SOURCE_DATE_EPOCH:-$$(date +%s)}" && \ + date="$$(date -u -d "@$$SOURCE_DATE_EPOCH" "+$$DATE_FMT" 2>/dev/null || date -u -r "$$SOURCE_DATE_EPOCH" "+$$DATE_FMT" 2>/dev/null || date -u "+$$DATE_FMT")" && \ + $(AWK) "{print}(\$$1 ~ /@COMMONIPCERRORS@/){exit 0}" ${top_srcdir}/man/$@.in > $@-t-t && \ + cat ${top_srcdir}/man/$(autogen_common) >> $@-t-t && \ + $(AWK) -v p=0 "(\$$1 ~ /@COMMONIPCERRORS@/){p = 1} {if(p==1)print}" ${top_srcdir}/man/$@.in >> $@-t-t && \ + cat $@-t-t | \ + $(SED) -e 's#@BUILDDATE@#'$$date'#g' \ + -e 's#@COMMONIPCERRORS@##g' \ + > $@-t && \ + rm -f $@-t-t && \ + mv $@-t $@ + +clean-local: + rm -rf $(HTML_DOCS) $(autogen_man) + +@BUILD_HTML_DOCS_TRUE@%.html: % +@BUILD_HTML_DOCS_TRUE@ $(GROFF) -mandoc -Thtml $^ > $@ + +@BUILD_HTML_DOCS_TRUE@install-data-local: +@BUILD_HTML_DOCS_TRUE@ $(INSTALL) -d $(DESTDIR)/${docdir}/html +@BUILD_HTML_DOCS_TRUE@ $(INSTALL) -m 644 ${srcdir}/$(INDEX_HTML) $(HTML_DOCS) $(DESTDIR)/${docdir}/html/ + +@BUILD_HTML_DOCS_TRUE@uninstall-local: +@BUILD_HTML_DOCS_TRUE@ cd $(DESTDIR)/${docdir}/html && rm -f $(INDEX_HTML) $(HTML_DOCS) +@BUILD_HTML_DOCS_TRUE@ rmdir $(DESTDIR)/${docdir}/html 2> /dev/null || : + +@BUILD_HTML_DOCS_TRUE@all-local: $(HTML_DOCS) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/man/cmap_context_get.3.in b/man/cmap_context_get.3.in new file mode 100644 index 0000000..8f257b5 --- /dev/null +++ b/man/cmap_context_get.3.in @@ -0,0 +1,58 @@ +.\"/* +.\" * 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_GET" 3 "23/01/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cmap_context_get \- Gets the context variable for a CMAP instance + +.SH SYNOPSIS +.P +\fB#include <corosync/cmap.h>\fR + +.P +\fBcs_error_t +cmap_context_get (cmap_handle_t \fIhandle\fB, const void **\fIcontext\fB);\fR + +.SH DESCRIPTION +.P +The \fBcmap_context_get\fR function is used to retrieve the context variable previously stored using +.B cmap_context_set(3). + +.SH RETURN VALUE +This call returns the CS_OK value if successful, otherwise an error is returned. + +.SH "SEE ALSO" +.BR cmap_context_set (3), +.BR cmap_overview (3) diff --git a/man/cmap_context_set.3.in b/man/cmap_context_set.3.in new file mode 100644 index 0000000..734ef0a --- /dev/null +++ b/man/cmap_context_set.3.in @@ -0,0 +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 <corosync/cmap.h>\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 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 (3) diff --git a/man/cmap_dec.3.in b/man/cmap_dec.3.in new file mode 100644 index 0000000..83612cb --- /dev/null +++ b/man/cmap_dec.3.in @@ -0,0 +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 <corosync/cmap.h>\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 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 (3) diff --git a/man/cmap_delete.3.in b/man/cmap_delete.3.in new file mode 100644 index 0000000..c99f00f --- /dev/null +++ b/man/cmap_delete.3.in @@ -0,0 +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 <corosync/cmap.h>\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 +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 (3) diff --git a/man/cmap_dispatch.3.in b/man/cmap_dispatch.3.in new file mode 100644 index 0000000..d87e780 --- /dev/null +++ b/man/cmap_dispatch.3.in @@ -0,0 +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 <corosync/cmap.h>\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 +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 (3) diff --git a/man/cmap_fd_get.3.in b/man/cmap_fd_get.3.in new file mode 100644 index 0000000..5af419a --- /dev/null +++ b/man/cmap_fd_get.3.in @@ -0,0 +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 "CMAP_FD_GET" 3 "23/01/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cmap_fd_get \- Dispatches callbacks from the CMAP service + +.SH SYNOPSIS +.P +\fB#include <corosync/cmap.h>\fR + +.P +\fBcs_error_t +cmap_fd_get (cmap_handle_t \fIhandle\fB, int *\fIfd\fB);\fR + +.SH DESCRIPTION +.P +The +.B cmap_fd_get +function is used to retrieve the file descriptor that may be used with the poll +system call to determine when +.B cmap_dispatch(3) +won't block. The +.I handle +argument may not be used directly with +.B poll +because it is not the file descriptor, but instead an internal identifier used +by the CMAP library. + +.SH RETURN VALUE +This call returns the CS_OK value if successful, otherwise an error is returned. + +.SH "SEE ALSO" +.BR cmap_dispatch (3), +.BR cmap_overview (3) diff --git a/man/cmap_finalize.3.in b/man/cmap_finalize.3.in new file mode 100644 index 0000000..4d580fc --- /dev/null +++ b/man/cmap_finalize.3.in @@ -0,0 +1,61 @@ +.\"/* +.\" * 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_FINALIZE" 3 "20/01/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cmap_finalize \- Finalize connection to CMAP + +.SH SYNOPSIS +.P +\fB#include <corosync/cmap.h>\fR + +.P +\fBcs_error_t cmap_finalize (cmap_handle_t \fIhandle\fB);\fR + +.SH DESCRIPTION +.P +The \fBcmap_finalize\fR function is used to to close a connection to the +CMAP API. Once the connection is finalized, the handle may not be +used again by applications. No more callbacks will be dispatched from the +.B cmap_dispatch +function. +.SH RETURN VALUE +This call returns the CS_OK value if successful, otherwise an error is returned. +CS_ERR_BAD_HANDLE error is returned when handle is invalid. + +.SH "SEE ALSO" +.BR cmap_initialize (3), +.BR cmap_dispatch (3), +.BR cmap_overview (3) diff --git a/man/cmap_get.3.in b/man/cmap_get.3.in new file mode 100644 index 0000000..939bf86 --- /dev/null +++ b/man/cmap_get.3.in @@ -0,0 +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 <corosync/cmap.h>\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 + +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 (3) diff --git a/man/cmap_inc.3.in b/man/cmap_inc.3.in new file mode 100644 index 0000000..06e733a --- /dev/null +++ b/man/cmap_inc.3.in @@ -0,0 +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 <corosync/cmap.h>\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 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 (3) diff --git a/man/cmap_initialize.3.in b/man/cmap_initialize.3.in new file mode 100644 index 0000000..6bc9119 --- /dev/null +++ b/man/cmap_initialize.3.in @@ -0,0 +1,64 @@ +.\"/* +.\" * 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 <corosync/cmap.h>\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 +.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_initialize_map (3), +.BR cmap_overview (3) diff --git a/man/cmap_initialize_map.3.in b/man/cmap_initialize_map.3.in new file mode 100644 index 0000000..423f96d --- /dev/null +++ b/man/cmap_initialize_map.3.in @@ -0,0 +1,73 @@ +.\"/* +.\" * Copyright (c) 2017 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_MAP" 3 "20/07/2017" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cmap_initialize_map \- Initialize CMAP API with a specific map + +.SH SYNOPSIS +.P +\fB#include <corosync/cmap.h>\fR + +.P +\fBcs_error_t cmap_initialize_map (cmap_handle_t \fI*handle\fB, cmap_map_t \fImap\fB);\fR + +.SH DESCRIPTION +.P +The \fBcmap_initialize_map\fR function is used to initialize a connection to +the Configuration Map API and specify a particular map to use. Each application may have +several connections to the CMAP API and to different maps. +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. +.P +The +.I map +argument specifies which map to connect to. \fICMAP_MAP_ICMAP\fB is the configuration map +that contains the current corosyn cconfiguraton and some runtime variables that maybe useful +to external agents. \fICMAP_MAP_STATS\fB is the statistics map that contains detailed information +about network and inter-process communications. + + +.SH RETURN VALUE +This call returns the CS_OK value if successful, otherwise an error is returned. + +.SH "SEE ALSO" +.BR cmap_initialize (3), +.BR cmap_finalize (3), +.BR cmap_overview (8) diff --git a/man/cmap_iter_finalize.3.in b/man/cmap_iter_finalize.3.in new file mode 100644 index 0000000..e00e05c --- /dev/null +++ b/man/cmap_iter_finalize.3.in @@ -0,0 +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 <corosync/cmap.h>\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 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 (3) diff --git a/man/cmap_iter_init.3.in b/man/cmap_iter_init.3.in new file mode 100644 index 0000000..1d369f6 --- /dev/null +++ b/man/cmap_iter_init.3.in @@ -0,0 +1,80 @@ +.\"/* +.\" * 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_INIT" 3 "03/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cmap_iter_init \- Initialize iterator for keys stored in CMAP + +.SH SYNOPSIS +.P +\fB#include <corosync/cmap.h>\fR + +.P +\fBcs_error_t +cmap_iter_init (cmap_handle_t \fIhandle\fB, const char *\fIprefix\fB, cmap_iter_handle_t *\fIcmap_iter_handle\fB);\fR + +.SH DESCRIPTION +.P +The +.B cmap_iter_init +function is used to initialize iteration of all keys with given +.I prefix. +The +.I handle +argument is connection to CMAP database obtained by calling +.B cmap_initialize(3) +function. +.I prefix +is string, and every returned key must have name with given prefix. This variable can also +be NULL (or empty string) and then all keys are iterated. + +.B cmap_iter_init +is used only for initialize context for future +.B cmap_iter_next(3) +calls and handle needed for that function is returned in +.I cmap_iter_handle +variable. When you have finished iteration over objects, call +.B cmap_iter_finalize(3) +function to free up memory associated with iteration. + +.SH RETURN VALUE +This call returns the CS_OK value if successful. If there are no items with given prefixes, +CS_ERR_NO_SECTIONS is returned. + +.SH "SEE ALSO" +.BR cmap_iter_next (3), +.BR cmap_iter_finalize (3), +.BR cmap_initialize (3), +.BR cmap_overview (3) diff --git a/man/cmap_iter_next.3.in b/man/cmap_iter_next.3.in new file mode 100644 index 0000000..95eb664 --- /dev/null +++ b/man/cmap_iter_next.3.in @@ -0,0 +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 <corosync/cmap.h>\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 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 (3) diff --git a/man/cmap_keys.7 b/man/cmap_keys.7 new file mode 100644 index 0000000..320917a --- /dev/null +++ b/man/cmap_keys.7 @@ -0,0 +1,426 @@ +.\"/* +.\" * Copyright (c) 2012-2020 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" 7 "2018-10-08" "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 ICMAP KEYS +These keys are in the icmap (default) map +.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 are read from the configuration file only (dynamic updates are not allowed). +Each node element in the configuration file gets +assigned its 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 use the corosync-blackbox command +to change keys in this prefix. + +.TP +runtime.force_gather +Set to 'yes' to force the processor to move into the GATHER state. This operation +is dangerous and is not recommended. + +.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 its 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.members.* +Prefix containing members of the totem single ring protocol. Each member +keys has format runtime.totem.members.NODEID.KEY, where key is +one of: + +.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. + +.TP +cfg.shutdown_timeout +Sets the timeout within which daemons that are registered for cfg callbacks must respond +to a corosync_cfg_try_shutdown() request. the default is 5000 mS + +.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 STATS KEYS +These keys are in the stats map. All keys in this map are read-only. +Modification tracking of individual keys is supported in the stats map, but not +prefixes. Add/Delete operations are supported on prefixes though so you can track +for new ipc connections or knet interfaces. +.TP +stats.srp.* +Prefix containing statistics about totem. +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 +stats.knet.nodeX.linkY.* +Statistics about the network traffic to and from each node and link when using +tke kronosnet transport + +.B connected +Whether the link is connected or not + +.B up_count +Number of times this link has changed state to UP + +.B down_count +Number of times this link has changed state to DOWN + +.B latency_ave / latency_max / latency_max +Calculated latencies of this link. Note that if there has been no traffic +on the link then latency_min will show a very large number. + +.B latency_samples +The number of samples used to calculate the latency figures, so you have +some idea of their precision. + +.B rx_data_packets / tx_data_packets +The number of packets sent/received on this link + +.B rx_data_bytes / tx_data_bytes +The number of bytes sent/received on this link + +.B rx_pmtu_packets / tx_pmtu_packets +The number of packets sent/received by the PMTUd subsystem + +.B rx_pmtu_bytes / tx_pmtu_bytes +The number of bytes sent/received by the PMTUd subsystem + +.B rx_ping_packets / tx_ping_packets +The number of packets sent/received as pings + +.B rx_ping_bytes / tx_ping_bytes +The number of bytes sent/received as pings + +.B rx_pong_packets / tx_pong_packets +The number of packets sent/received as pongs + +.B rx_pong_bytes / tx_pong_bytes +The number of bytes sent/received as pongs + +.B rx_total_packets / tx_total_packets +The total number of packets sent/received. The aggregate of all of the above packet stats + +.B rx_total_bytes / tx_total_bytes +The total number of bytes sent/received. The aggregate of all of the above bytes stats + +.B tx_data_retries / tx_pmtu_retries / tx_ping_retries / tx_pong_retries / tx_total_retries +Number of times a transmit operation had to be retried due to the socket returning EAGAIN + +.TP +stats.ipcs.* +There is information about total number of active connections from client programs +at the time the request was made. +.B active +number of closed connections during whole runtime of corosync +.B closed +Total number of connections that have been made since corosync was started + +.TP +stats.ipcs.ID.* +Each IPC connection has a unique ID. This is in the form [[serviceX:][PID:]internal_id. + +Typical keys in this prefix are: + +.B proc_name +process name of connected process (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 +stats.schedmiss.<n>.* +If corosync is not scheduled after the required period of time it will +log this event and also write an entry to the stats cmap under this key. +There can be up to 10 entries (0..9) in here, when an 11th event happens +the earliest will be removed. + +These events will always be in reverse order, so stats.schedmiss.0.* will +always be the latest event kept and 9 the oldest. If you want to listen +for notifications then you are recommended to listen for changes +to stats.schedmiss.0.timestamp or stats.schedmiss.0.delay. + +.B timestamp +The time of the event in ms since the Epoch (ie time_t * 1000 but with +valid milliseconds). + +.B delay +The time that corosync was paused (in ms, float value). + + +.TP +stats.clear.* +These are write-only keys used to clear the stats for various subsystems + +.B totem +Clears the pg & srp totem stats. + +.B knet +Clears the knet stats + +.B ipc +Clears the ipc stats + +.B schedmiss +Clears the schedmiss stats + +.B all +Clears all of the above stats + + +.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 "SEE ALSO" +.BR corosync_overview (7), +.BR corosync.conf (5), +.BR corosync-cmapctl (8) diff --git a/man/cmap_overview.3 b/man/cmap_overview.3 new file mode 100644 index 0000000..0aa3c14 --- /dev/null +++ b/man/cmap_overview.3 @@ -0,0 +1,78 @@ +.\"/* +.\" * 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_OVERVIEW" 3 "03/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cmap_overview \- Overview of the Configuration Map + +.SH OVERVIEW +.P +The CMAP library is used to interact with the configuration & statistics databases used by corosync. + +.PP +The library provides a mechanism to: +.PP +* Create of new keys +.PP +* Change existing keys +.PP +* Remove keys +.PP +* Iterate keys with given prefix +.PP +* Track changes on keys + +Description of most keys created by corosync itself can be found in cmap_keys (7). + +.SH BUGS +.SH "SEE ALSO" +.BR cmap_initialize (3), +.BR cmap_initialize_map (3), +.BR cmap_finalize (3), +.BR cmap_get (3), +.BR cmap_set (3), +.BR cmap_delete (3), +.BR cmap_inc (3), +.BR cmap_dec (3), +.BR cmap_fd_get (3), +.BR cmap_dispatch (3), +.BR cmap_context_set (3), +.BR cmap_context_get (3), +.BR cmap_iter_init (3), +.BR cmap_iter_next (3), +.BR cmap_iter_finalize (3), +.BR cmap_track_add (3), +.BR cmap_track_delete (3), +.BR cmap_keys (7) diff --git a/man/cmap_set.3.in b/man/cmap_set.3.in new file mode 100644 index 0000000..de7af1f --- /dev/null +++ b/man/cmap_set.3.in @@ -0,0 +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 <corosync/cmap.h>\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 setting such key will result in CS_ERR_ACCESS error. + +.SH "SEE ALSO" +.BR cmap_get (3), +.BR cmap_initialize (3), +.BR cmap_overview (3) diff --git a/man/cmap_track_add.3.in b/man/cmap_track_add.3.in new file mode 100644 index 0000000..02e07c3 --- /dev/null +++ b/man/cmap_track_add.3.in @@ -0,0 +1,170 @@ +.\"/* +.\" * 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 <corosync/cmap.h>\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 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 NOTES +Modification tracking of individual keys is supported in the stats map, but not +prefixes. Add/Delete operations are supported on prefixes though so you can track +for new ipc connections or knet interfaces. +In the icmap map, prefix tracking is fully supported. + +.SH "SEE ALSO" +.BR cmap_track_delete (3), +.BR cmap_initialize (3), +.BR cmap_get (3), +.BR cmap_dispatch (3), +.BR cmap_overview (3) diff --git a/man/cmap_track_delete.3.in b/man/cmap_track_delete.3.in new file mode 100644 index 0000000..81946a3 --- /dev/null +++ b/man/cmap_track_delete.3.in @@ -0,0 +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_TRACK_DELETE" 3 "06/02/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cmap_track_delete \- Remove tracking of values in CMAP + +.SH SYNOPSIS +.P +\fB#include <corosync/cmap.h>\fR + +.P +\fBcs_error_t +cmap_track_delete (cmap_handle_t \fIhandle\fB, cmap_track_handle_t \fItrack_handle\fB);\fR + +.SH DESCRIPTION +.P +The +.B cmap_track_delte +function is used to remove tracking of values changed in CMAP. +The +.I handle +argument is connection to CMAP database obtained by calling +.B cmap_initialize(3) +function. +.I track_handle +argument is iterator handle obtained by +.B cmap_track_add(3) +function. + +.SH RETURN VALUE +This call returns the CS_OK value if successful. CS_ERR_BAD_HANDLE error is returned when track_handle +is invalid. + +.SH "SEE ALSO" +.BR cmap_track_add (3), +.BR cmap_initialize (3), +.BR cmap_overview (3) diff --git a/man/corosync-blackbox.8 b/man/corosync-blackbox.8 new file mode 100644 index 0000000..75d3806 --- /dev/null +++ b/man/corosync-blackbox.8 @@ -0,0 +1,69 @@ +.\"/* +.\" * Copyright (C) 2010 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Angus Salkeld <asalkeld@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 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-BLACKBOX 8 2010-05-30 +.SH NAME +corosync-blackbox \- Dump live "flight data" from the corosync "blackbox". +.SH SYNOPSIS +.B "corosync-blackbox" +.SH DESCRIPTION +.B corosync-blackbox +Trigger corosync to write it's "flight data" out to file and then run +.B qb-blackbox +which prints it out. +.SH EXAMPLES +.TP +Print the current "flight data". +.br +$ corosync-blackbox +.br +Starting replay: head [74205] tail [0] +.br +rec=[1] Log Message=Corosync Cluster Engine ('1.2.1'): started and ready to provide service. +.br +[...] +.br +rec=[2607] Log Message=Delivering MCAST message with seq a to pending delivery queue +.br +rec=[2608] Log Message=downlist received left_list: 2 +.br +rec=[2609] Log Message=chosen downlist from node r(0) ip(192.168.100.11) +.br +Finishing replay: records found [2609] +.br +.SH SEE ALSO +.BR qb-blackbox (8), +.BR corosync-cmapctl (8) +.SH AUTHOR +Angus Salkeld +.PP diff --git a/man/corosync-cfgtool.8 b/man/corosync-cfgtool.8 new file mode 100644 index 0000000..bcfb900 --- /dev/null +++ b/man/corosync-cfgtool.8 @@ -0,0 +1,139 @@ +.\" +.\" * Copyright (C) 2010-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Angus Salkeld <asalkeld@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-CFGTOOL" "8" "2020-06-02" "" "" +.SH "NAME" +corosync-cfgtool \- An administrative tool for corosync. +.SH "SYNOPSIS" +.B corosync\-cfgtool [[\-i IP_address] [\-b] [\-s] [\-n] [\-R] [\-L] [\-k nodeid] [\-a nodeid] [\-h] [\-H] [\--force] +.SH "DESCRIPTION" +.B corosync\-cfgtool +A tool for displaying and configuring active parameters within corosync. +.SH "OPTIONS" +.TP +.B -i +Finds only information about the specified interface IP address or link id with -s. +.TP +.B -s +Displays the status of the current links on this node for UDP/UDPU, with extended status +for KNET. +After each link, the nodes on that link are displayed in order with their status, +for example there are 3 nodes with KNET transport: + +LINK ID 0 + addr = 192.168.100.80 + status: + nodeid 1: localhost + nodeid 2: connected + nodeid 3: connected + +Please note that only one link is returned for a single node cluster configuration, +no matter how many links are configured. +.TP +.B -b +Displays the brief status of the current links on this node when used +with "-s". If any interfaces are faulty, 1 is returned by the binary. If all interfaces +are active 0 is returned to the shell. +After each link, the nodes on that link are displayed in order with their status +encoded into a single digit, or characters 'n', 'd' and '?' with special meaning. +1=link enabled, 2=link connected, So a 3 in a node position indicates that the +link is both enabled and connected. Status represented by character 'n' is used for +localhost link. Character '?' means that Corosync was unable to get status of link from knet (log +should contain more information). Character 'd' shouldn't appear and it means that Corosync +was unable to configure a link and it is result of some error which should have been logged. + +The output will be: + +LINK ID 0 + addr = 192.168.100.80 + status = n33 +.TP +.B -n +Displays the status of the current nodes in the system with their link status(es). +.P +.nf +Local node ID 1, transport knet +nodeid: 2 reachable onwire (min/max/cur): 0, 1, 1 + LINK: 0 (192.168.1.101->192.168.1.102) enabled connected mtu: 1397 + LINK: 1 (192.168.4.1->192.168.4.2) enabled mtu: 469 + LINK: 2 (192.168.9.1->192.168.9.2) enabled mtu: 469 +.fi +.P +Only reachable nodes are displayed so "reachable" should always be there. +.br +\(oqonwire\(cq versions are the knet on-wire versions that are supported/in use (where appropriate). +.br +IP addresses are the local and remote IP addresses (for UDP[U] only the local IP address is shown) +.br +enabled - means the link has been brought up +.br +connected - means that the link is connected to the remote node +.br +dynconnected - is not currently implemented +.br +mtu - shows the size of data packets. Should be the link packet size less a small amount +for protocol overheads and encryption +.TP +.B -R +Tell all instances of corosync in this cluster to reload corosync.conf. + +Running corosync-cfgtool -R where nodes are running different versions +of corosync (including minor versions) is unsupported and may result in undefined +behaviour. +.TP +.B -L +Tell corosync to reopen all logging files. In contrast to other subcommands, +nothing is displayed on terminal if call is successful. +.TP +.B -k +Kill a node identified by node id. +.TP +.B -a +Display the IP address(es) of a node. +.TP +.B -h +Print basic usage. +.TP +.B -H +Shutdown corosync cleanly on this node. +corosync-cfgtool -H will request a shutdown from corosync, which means it will +consult any interested daemons before shutting down and the shutdown maybe vetoed if a +daemon regards the shutdown as inappropriate. +If --force is added to the command line then corosync will shutdown regardless +of the daemons' opinions on the matter. + +.SH "SEE ALSO" +.BR corosync_overview (7), +.SH "AUTHOR" +Angus Salkeld +.PP diff --git a/man/corosync-cmapctl.8 b/man/corosync-cmapctl.8 new file mode 100644 index 0000000..8826503 --- /dev/null +++ b/man/corosync-cmapctl.8 @@ -0,0 +1,99 @@ +.\"/* +.\" * Copyright (C) 2010 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Angus Salkeld <asalkeld@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-CMAP 8 2012-01-23 +.SH NAME +corosync-cmapctl: \- A tool for accessing the object database. +.SH DESCRIPTION +usage: corosync\-cmapctl [\-b] [\-DdghsTt] [\-m map] [\-p filename] [params...] +.HP +\fB\-b\fR show binary values +.HP +\fB\-m\fR select map to use +.IP +The default map is 'icmap' which contains configuration information and some runtime variables +used by corosync. A 'stats' map is also available which displays network statistics - in +great detail when knet is used as the transport. Tracking of individual keys (but not prefixes) +works on the stats map but notifications are sent on a timer, and not every time a value changes. + +.SS "Set key:" +.IP +corosync\-cmapctl \fB\-s\fR key_name type value +.IP +where type is one of ([i|u][8|16|32|64] | flt | dbl | str | bin) +for bin, value is file name (or \- for stdin) +.SS "Load settings from a file:" +.IP +corosync\-cmapctl \fB\-p\fR filename +.IP +the format of the file is: +[^[^]]<key_name>[ <type> <value>] +.IP +Keys prefixed with single caret ('^') are deleted (see \fB\-d\fR). +.IP +Keys (actually prefixes) prefixed with double caret ('^^') are deleted by prefix (see \fB\-D\fR). +.IP +<type> and <value> are optional (not checked) in above cases. +.IP +Other keys are set (see \fB\-s\fR) so both <type> and <value> are required. +.SS "Delete key:" +.IP +corosync\-cmapctl \fB\-d\fR key_name... +.SS "Delete multiple keys with prefix:" +.IP +corosync\-cmapctl \fB\-D\fR key_prefix... +.SS "Get key:" +.IP +corosync\-cmapctl [\-b] \fB\-g\fR key_name... +.SS "Quiet output:" +.IP +corosync\-cmapctl [\-b] \fB\-q\fR \fB\-g\fR key_name... +.SS "Display all keys:" +.IP +corosync\-cmapctl [\-b] +.SS "Display keys with prefix key_name:" +.IP +corosync\-cmapctl [\-b] key_name... +.SS "Track changes on keys with key_name:" +.IP +corosync\-cmapctl [\-b] \fB\-t\fR key_name +.SS "Track changes on keys with key prefix:" +.IP +corosync\-cmapctl [\-b] \fB\-T\fR key_prefix +.SS "Clear statistics (-mstats is implied)" +.IP +corosync\-cmapctl \fB\-C\fR [ipc|totem|knet|all] + +.SH "SEE ALSO" +.BR cmap_overview (3), +.BR cmap_keys (7) diff --git a/man/corosync-cpgtool.8 b/man/corosync-cpgtool.8 new file mode 100644 index 0000000..c2b1fd1 --- /dev/null +++ b/man/corosync-cpgtool.8 @@ -0,0 +1,85 @@ +.\"/* +.\" * Copyright (C) 2010 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Angus Salkeld <asalkeld@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-CPGTOOL 8 2010-05-30 +.SH NAME +corosync-cpgtool \- A tool for displaying cpg groups and members. +.SH SYNOPSIS +.B "corosync-cpgtool [\-d delimiter] [\-e] [\-n] [\-h]" +.SH DESCRIPTION +.B corosync-cpgtool +A tool for displaying cpg groups and members. +.SH OPTIONS +.TP +.B -d +Delimiter between fields. +.TP +.B -e +Don't escape unprintable characters in group name. +.TP +.B -n +Display only all existing group names. +.TP +.B -h +Display this help. +.SH EXAMPLES +.TP +Display the groups and process that belong to those cpg groups. +$ corosync-cpgtool +.br +Group Name PID Node ID +.br +example-group +.br + 2515 191146176 (192.168.100.11) +.br + 2471 207923392 (192.168.100.12) +.TP +Get a comma-delimited list. +$ corosync-cpgtool -d "," +.br +GRP_NAME,PID,NODEID +.br +example-group,2515,191146176 +.br +example-group,2471,207923392 +.TP +Just get the group names +$ corosync-cpgtool -n +.br +example-group +.SH SEE ALSO +.BR corosync_overview (7), +.SH AUTHOR +Angus Salkeld +.PP diff --git a/man/corosync-keygen.8 b/man/corosync-keygen.8 new file mode 100644 index 0000000..8767ddc --- /dev/null +++ b/man/corosync-keygen.8 @@ -0,0 +1,118 @@ +.\"/* +.\" * Copyright (C) 2010-2019 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Angus Salkeld <asalkeld@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-KEYGEN 8 2019-04-09 +.SH NAME +corosync-keygen \- Generate an authentication key for Corosync. +.SH SYNOPSIS +.B "corosync-keygen [\-k <filename>] [-m <randomfile>] [\-s size] [\-l] [\-h]" +.SH DESCRIPTION + +If you want to configure corosync to use cryptographic techniques to ensure authenticity +and privacy of the messages, you will need to generate a private key. +.PP +.B corosync-keygen +creates this key and writes it to /etc/corosync/authkey or to file specified by +-k option. +.PP +This private key must be copied to every processor in the cluster. If the +private key isn't the same for every node, those nodes with nonmatching private +keys will not be able to join the same configuration. +.PP +Copy the key to some security transportable storage or use ssh to transmit the +key from node to node. Then install the key with the command: +.PP +unix#: install -D --group=0 --owner=0 --mode=0400 /path_to_authkey/authkey /etc/corosync/authkey +.PP +If a message "Invalid digest" appears from the corosync executive, the keys +are not consistent between processors. +.PP +.SH OPTIONS +.TP +.B -k <filename> +This specifies the fully qualified path to the shared key to create. +.br +The default is /etc/corosync/authkey. +.TP +.B -r +Random number source file. Default is /dev/urandom. As an example /dev/random may be +used when really superb randomness is needed. +.TP +.B -s size +Size of the generated key in bytes. Default is 256 bytes. Allowed range is <128, 4096>. +.TP +.TP +.B -l +Option is not used and it's kept only for compatibility. +.TP +.B -h +Print basic usage. + +.SH EXAMPLES +.TP +Generate the key. +.nf +# corosync-keygen +Corosync Cluster Engine Authentication key generator. +Gathering 2048 bits for key from /dev/urandom. +Writing corosync key to /etc/corosync/authkey +.fi + +.TP +Generate longer key and store it in the /tmp/authkey file. +.nf +$ corosync-keygen -s 2048 -k /tmp/authkey +Corosync Cluster Engine Authentication key generator. +Gathering 16384 bits for key from /dev/urandom. +Writing corosync key to /tmp/authkey. +.fi + +.TP +Generate superb key using /dev/random +.nf +# corosync-keygen -r /dev/random +Gathering 2048 bits for key from /dev/random. +Press keys on your keyboard to generate entropy. +Press keys on your keyboard to generate entropy (1128 bits still needed). +Press keys on your keyboard to generate entropy (504 bits still needed). +Press keys on your keyboard to generate entropy (128 bits still needed). +Press keys on your keyboard to generate entropy (32 bits still needed). +Writing corosync key to /etc/corosync/authkey. +.fi + +.SH SEE ALSO +.BR corosync_overview (7), +.BR corosync.conf (5), +.SH AUTHOR +Angus Salkeld +.PP diff --git a/man/corosync-notifyd.8 b/man/corosync-notifyd.8 new file mode 100644 index 0000000..05a91a2 --- /dev/null +++ b/man/corosync-notifyd.8 @@ -0,0 +1,148 @@ +.\"/* +.\" * Copyright (C) 2010 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Angus Salkeld <asalkeld@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 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 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 IP address (defaults to localhost). +.TP +.B -n +No reverse DNS lookup on cmap member change events. +.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-quorumtool.8 b/man/corosync-quorumtool.8 new file mode 100644 index 0000000..24c9112 --- /dev/null +++ b/man/corosync-quorumtool.8 @@ -0,0 +1,112 @@ +.\"/* +.\" * Copyright (C) 2010,2014 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Angus Salkeld <asalkeld@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-QUORUMTOOL 8 2019-02-14 +.SH NAME +corosync-quorumtool \- Set and display quorum settings. +.SH SYNOPSIS +.B "corosync-quorumtool [\-s] [\-m] [\-l] [\-p] [\-v votes] [\-n nodeid] [\-e expected] [\-H] [\-i] [\-o <a|n|i>] [\-a] [\-f] [\-h] [\-V]" +.SH DESCRIPTION +Display the current state of quorum in the cluster and set vote quorum options. +.SH OPTIONS +.TP +.B -s +show quorum status +.TP +.B -m +constantly monitor quorum status +.TP +.B -l +list nodes +.TP +.B -p +when used with -s or -l, generates machine parsable output +.TP +.B -v <votes> +change the number of votes for a node * +.TP +.B -n <nodeid> +optional nodeid of node for -v +.TP +.B -e <expected> +change expected votes for the cluster * +.TP +.B -H +show nodeids in hexadecimal rather than decimal +.TP +.B -i +show node IP addresses instead of the resolved name +.TP +.B -p +when used with -s or -l, generates machine parsable output +.TP +.B -o <a|n|i> +Orders the output of the nodes list. By default or with -oa nodes are listed in IP address +order: as they come from corosync. -on will order the nodes based on their name, +and -oi will order them based on their node ID. +.TP +.B -a +Show the name or IP address (see -i above) of all interfaces in use on the nodes, rather than +just the first one. +.TP +.B -f +forcefully unregister a quorum device *DANGEROUS* * +.TP +.B -h (if no other argument) +show this help text +.TP +.B -V +show version and exit +.PP +* Starred items only work if votequorum is the quorum provider for corosync +.SH EXIT STATUS +corosync-quorumtool may return one of several error codes if it encounters problems. +.TP +0 +No problems occurred (quorate for +.B -s +operation). +.TP +1 +Generic error code. +.TP +2 +Not quorate (returned only for +.B -s +operation). +.SH SEE ALSO +.BR corosync_overview (7), +.BR votequorum_overview (3), +.SH AUTHOR +Angus Salkeld +.PP diff --git a/man/corosync-vqsim.8 b/man/corosync-vqsim.8 new file mode 100644 index 0000000..26a6468 --- /dev/null +++ b/man/corosync-vqsim.8 @@ -0,0 +1,94 @@ +.\"/* +.\" * Copyright (C) 2019 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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-VQSIM 8 2019-05-10 +.SH NAME +corosync-vqsim \- The votequorum simulator +.SH SYNOPSIS +.B "corosync-vqsim [\-c config_file] [\-o output file] [\-n] [\-h]" +.SH DESCRIPTION +.B corosync-vqsim +simulates the quorum functions of corosync in a single program. it can simulate +multiple nodes, network splits and a basic quorum device. + +By default vqsim will build a virtual cluster of all the nodes in the corosync.conf file, +each 'node' running in a forked subprocess (and thus asynchronously). It then provides a +command-line interface to add (up) or remove (down) nodes, and cause network splits and +rejoins. After each event it shows the new quorum status for all nodes. + +Nodes in vqsim are always referred to by their nodeid (the IP address is meaningless) and +optionally by a 'partition' which precedes the nodeid with a colon. By default all nodes +are in partition 0. Nodes can be moved between partitions using the split and join commands. +Multiple nodes can be split and joined at the same time. + +To script vqsim you must send input to it via a pipe rather than just redirecting STDIN. This +is because it runs asynchronously to enable the virtual 'nodes' to report status when needed. +(eg if you kill a subprocess using the 'kill(1)' command it gets removed from the cluster). + +By default vqsim will wait for all nodes in all partitions to reach the same +ring sequence number before returning a prompt, +there is a timeout associated with this in case of a 'node' failure and exceeding this timeout +can (optionally) quit the program signalling an error. + +You can disable waiting using the 'sync off' command or the -n command-line option. This can easily +cause unexpected behaviour so use it with care. + +The number of votes per node is read from corosync.conf. New nodes added using the 'up' command +will copy their number of votes from the first node in corosync.conf. This may not be what you +expect and I might fix it in future. As most clusters have only 1 vote per node (and this is +strongly recommended) then this should rarely be a problem. + +Once you have the 'vqsim> ' prompt you can type 'help' and get a list of sub-commands. + +.SH OPTIONS +.TP +.B -c +This specifies the fully qualified path to the corosync configuration file. + +The default is /etc/corosync/corosync.conf. +.TP +.B -o +Specifies the output destination. STDOUT by default. +.TP +.B -n +Don't pause after each command, come straight back to a prompt. Use with care! + +.TP +.B -h +Display a brief help message +.SH SEE ALSO +.BR corosync (9), +.BR corosync.conf (5), +.SH AUTHOR +Christine Caulfield +.PP diff --git a/man/corosync-xmlproc.8 b/man/corosync-xmlproc.8 new file mode 100644 index 0000000..dc4d4bd --- /dev/null +++ b/man/corosync-xmlproc.8 @@ -0,0 +1,57 @@ +.\"/* +.\" * Copyright (C) 2011 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 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-XMLPROC 8 2011-12-16 +.SH NAME +corosync-xmlproc \- Converts corosync.xml to the Corosync configuration file. +.SH SYNOPSIS +.B "corosync-xmlproc input_xml [output_file]" +.SH DESCRIPTION +.B corosync-xmlproc +Converts valid corosync.xml file to the Corosync configuration file format. Command internally +uses +.B +xsltproc +for XML conversion. +.SH OPTIONS +.TP +.B input_xml +Valid XML file to convert. +.TP +.B output_file +Destination file name. If parameter is - or omitted, output is written to standard output. +.SH SEE ALSO +.BR corosync.xml (5) +.SH AUTHOR +Jan Friesse +.PP diff --git a/man/corosync.8 b/man/corosync.8 new file mode 100644 index 0000000..5d219b1 --- /dev/null +++ b/man/corosync.8 @@ -0,0 +1,70 @@ +.\"/* +.\" * Copyright (C) 2010-2021 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Angus Salkeld <asalkeld@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 8 2021-04-09 +.SH NAME +corosync \- The Corosync Cluster Engine. +.SH SYNOPSIS +.B "corosync [\-c config_file] [\-f] [\-t] [\-v]" +.SH DESCRIPTION +.B corosync +Corosync provides clustering infrastructure such as membership, messaging and quorum. +.SH OPTIONS +.TP +.B -c +This specifies the fully qualified path to the corosync configuration file. Also used +as a base directory for uidgid files. + +The default is /etc/corosync/corosync.conf. +.TP +.B -f +Start application in foreground. +.TP +.B -t +Test configuration and then exit. +.TP +.B -v +Display version, git revision, compiled features and available crypto and compression +models and exit. + +.SH SEE ALSO +.BR corosync_overview (7), +.BR corosync.conf (5), +.BR cpg_overview (3), +.BR votequorum_overview (3), +.BR sam_overview (3), +.BR cmap_overview (3), +.BR quorum_overview (3) +.SH AUTHOR +Angus Salkeld +.PP diff --git a/man/corosync.conf.5 b/man/corosync.conf.5 new file mode 100644 index 0000000..e76d64e --- /dev/null +++ b/man/corosync.conf.5 @@ -0,0 +1,1061 @@ +.\"/* +.\" * Copyright (c) 2005 MontaVista Software, Inc. +.\" * Copyright (c) 2006-2022 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 2022-10-20 "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 +system { } +This top level directive contains configuration options related to system. +.TP +resources { } +This top level directive contains configuration options for resources. +.TP +nozzle { } +This top level directive contains configuration options for a libnozzle device. + +.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 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. +knet_ping_interval and knet_ping_timeout +are a pair, if one is specified the other should be too, otherwise one will be calculated from +the token timeout and one will be taken from the config file. +(default is token timeout / (knet_pong_count*2)) + +.TP +knet_ping_timeout +If no ping is received within this time, the knet link is declared dead. +knet_ping_interval and knet_ping_timeout +are a pair, if one is specified the other should be too, otherwise one will be calculated from +the token timeout and one will be taken from the config file. +(default is token timeout / knet_pong_count) + +.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 2) +.TP + +knet_transport +Which IP transport knet should use. valid values are "sctp" or "udp". (default: udp) + +.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. + +.TP +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 therefore ensure the nodeid is a positive signed 32 bit integer. + +WARNING: Cluster behavior is undefined if this option is enabled on only +a subset of the cluster (for example during a rolling upgrade). + +.TP +crypto_model +This specifies which cryptographic library should be used by knet. +Supported values depend on the libknet build and on the installed +cryptography libraries. Typically nss and openssl will be available +but gcrypt and others could also be allowed. + +The default is nss. + +.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 none. + +.TP +crypto_cipher +This specifies which cipher should be used to encrypt all messages. +Valid values are none (no encryption), aes256, aes192 and aes128. +Enabling crypto_cipher, requires also enabling of crypto_hash. Encrypted +transmission is only supported for the knet transport. + +The default is none. + +.TP +secauth +This implies crypto_cipher=aes256 and crypto_hash=sha256, unless those options +are explicitly set. Encrypted transmission is only supported for the knet +transport. + +The default is off. + +.TP +keyfile +This specifies the fully qualified path to the shared key used to +authenticate and encrypt data used within the Totem protocol. + +The default is /etc/corosync/authkey. + +.TP +key +Shared key stored in configuration instead of authkey file. This option +has lower precedence than keyfile option so it's +used only when keyfile is not specified. +Using this option is not recommended for security reasons. + +.TP +link_mode +This specifies the Kronosnet mode, which may be passive, active, or +rr (round-robin). +.B passive: +the active link with the highest priority (highest number) 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. + +.TP +netmtu +This specifies maximum packet length sent by corosync. It's mainly for the UDPU +(and UDP) transport, where it specifies the network maximum transmit size, but +can be used also with the KNET transport, where it defines the maximum length of packets +passed to the knet layer. To specify the network MTU manually for KNET, use the +.B knet_mtu +option. + +For UDPU (and UDP), setting 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 for UDPU (and UDP) and 65536 for the KNET transport. + +.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 +This specifies version of IP to ask DNS resolver for. +The value can be one of +.B ipv4 +(look only for an IPv4 address) +, +.B ipv6 +(check only IPv6 address) +, +.B ipv4-6 +(look for all address families and use first IPv4 address found in the list if there is such address, +otherwise use first IPv6 address) and +.B ipv6-4 +(look for all address families and use first IPv6 address found in the list if there is such address, +otherwise use first IPv4 address). + +Default (if unspecified) is +.B ipv6-4 +for knet and udpu transports and +.B ipv4 +for udp. + +The knet transport supports IPv4 and IPv6 addresses concurrently, +provided they are consistent on each link. + +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.totem.token +key. + +Be careful to use the same timeout values on each of the nodes in the cluster +or unpredictable results may occur. + +The default is 3000 milliseconds. + +.TP +token_warning +Specifies the interval between warnings that the token has not been received. The +value is a percentage of the token timeout and can be set to 0 to disable +warnings. + +The default is 75%. + +.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 minimum is 30 milliseconds. If not set and error occur, make sure +token / (token_retransmits_before_loss_const + 0.2) is more than 30. + +The default is 238 milliseconds for two nodes cluster. Three or more nodes reference +.B token_coefficient. + +.TP +knet_compression_model +Type of compression used by Kronosnet. Supported values depend on +the libknet build and on the installed compression libraries. Typically zlib and lz4 will be available +but bzip2 and others could also be allowed. The default is 'none'. + +.TP +knet_compression_threshold +Tells knet to NOT compress any packets that are smaller than the value +indicated. Default 100 bytes. + +Set to 0 to reset to the default. +Set to 1 to compress everything. + +.TP +knet_compression_level +Many compression libraries allow tuning of compression parameters. For example +0 or 1 ... 9 are commonly used to determine the level of compression. This value +is passed unmodified to the compression library so it is recommended to consult +the library's documentation for more detailed information. + +.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. It is also used for token_retransmit +and hold calculations. + +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 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 than the join timeout but less than +token is safe. For three node or larger clusters, consensus should be larger +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 3600 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 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 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: 30 + +.TP +knet_mtu +Switch between manual and automatic MTU discovery. A value of 0 means +automatic, other values set a manual MTU. +In a setup with multiple interfaces, please specify +the lowest MTU of the selected interfaces. + +The default value is 0. + +.TP +block_unlisted_ips +Allow UDPU and KNET to drop packets from IP addresses that are not known +(nodes which don't exist in the nodelist) to corosync. +Value is yes or no. + +This feature is mainly to protect against the joining of nodes +with outdated configurations after a cluster split. +Another use case is to allow the atomic merge of two independent clusters. + +Changing the default value is not recommended, the overhead is tiny and +an existing cluster may fail if corosync is started on an unlisted node +with an old configuration. + +The default value is yes. + +.TP +cancel_token_hold_on_retransmit +Allows Corosync to hold token by representative when there is too much +retransmit messages. This allows network to process increased load without +overloading it. Used mechanism is same as described for +.B hold +directive. + +Some deployments may prefer to never hold token when there is +retransmit messages. If so, option should be set to yes. + +The default value is no. + +.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. It can be one +of off (no timestamp), on (second precision timestamp) or +hires (millisecond precision timestamp - only when supported by LibQB). + +The default is hires (or on if hires is not supported). + +.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. + +.TP +blackbox +This specifies that blackbox functionality should be enabled. + +The default is on. + +.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 +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 or network hostname address of the particular node. +X is a link number. + +.TP +nodeid +This configuration option is required for each node for Kronosnet mode. +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. If knet is set, this field must be set. + +.TP +name +This option is used mainly with knet transport to identify local node. +It's also used by client software (pacemaker). +Algorithm for identifying local node is following: +.RS +.IP 1. +Looks up $HOSTNAME in the nodelist +.IP 2. +If this fails strip the domain name from $HOSTNAME and looks up +that in the nodelist +.IP 3. +If this fails look in the nodelist for a fully-qualified name whose +short version matches the short version of $HOSTNAME +.IP 4. +If all this fails then search the interfaces list for an address that +matches a name in the nodelist +.RE + +.PP +Within the +.B system +directive it is possible to specify system options. + +Possible options are: +.TP +qb_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. + +.TP +sched_rr +Should be set to yes (default) if corosync should try to set round robin realtime +scheduling with maximal priority to itself. When setting of scheduler fails, fallback to set +maximal priority. + +.TP +priority +Set priority of corosync process. Valid only when sched_rr is set to no. +Can be ether numeric value with similar meaning as +.BR nice (1) +or +.B max +/ +.B min +meaning maximal / minimal priority (so minimal / maximal nice value). + +.TP +move_to_root_cgroup +Can be one of +.B yes +(Corosync always moves itself to root cgroup), +.B no +(Corosync never tries to move itself to root cgroup) or +.B auto +(Corosync first checks if sched_rr is enabled, and if +so, it tries to set round robin realtime scheduling with maximal priority to itself. +If setting of priority fails, corosync tries to move itself to root +cgroup and retries setting of priority). + +This feature is available only for systems with cgroups v1 with RT +sched enabled (Linux with CONFIG_RT_GROUP_SCHED kernel option) and cgroups v2. + +It's worth noting that currently (May 3 2021) cgroup2 doesn’t yet +support control of realtime processes and the cpu controller can only be +enabled when all RT processes are in the root cgroup (applies only for kernel +with CONFIG_RT_GROUP_SCHED enabled). So when move_to_root_cgroup +is disabled, kernel is compiled with CONFIG_RT_GROUP_SCHED and systemd is used, +it may be impossible to make systemd options +like CPUQuota working correctly until corosync is stopped. + +Also when moving to root cgroup is enforced and used together with cgroup2 and systemd +it makes impossible (most of the time) for journald to add systemd specific +metadata (most importantly _SYSTEMD_UNIT) properly, because corosync is +moved out of cgroup created by systemd. This means +it is not possible to filter corosync logged messages based on these metadata +(for example using -u or _SYSTEMD_UNIT=UNIT pattern) and also running +systemctl status doesn't display (all) corosync log messages. +The problem is even worse because journald caches pid for some time +(approx. 5 sec) so initial corosync messages have correct metadata. + +.TP +allow_knet_handle_fallback +If knet handle creation fails using privileged operations, allow fallback to +creating knet handle using unprivileged operations. Defaults to no, meaning +if privileged knet handle creation fails, corosync will refuse to start. + +The knet handle will always be created using privileged operations if possible, +setting this to yes only allows fallback to unprivileged operations. This fallback +may result in performance issues, but if running in an unprivileged environment, +e.g. as a normal user or in unprivileged container, this may be required. + +.TP +state_dir +Existing directory where corosync should chdir into. Corosync stores +important state files and blackboxes there. + +The default is /var/lib/corosync. + +.PP +Within the +.B resources +directive it is possible to specify options for resources. + +Possible option is: +.TP +watchdog_device +(Valid only if Corosync was compiled with watchdog support.) +.br +Watchdog device to use, for example /dev/watchdog. +If unset, empty or "off", no watchdog is used. +.IP +In a cluster with properly configured power fencing a watchdog +provides no additional value. On the other hand, slow watchdog +communication may incur multi-second delays in the Corosync main loop, +potentially breaking down membership. IPMI watchdogs are particularly +notorious in this regard: read about kipmid_max_busy_us in IPMI.txt in +the Linux kernel documentation. + + +.PP +Within the +.B nozzle +directive it is possible to specify options for a libnozzle device. This is a pseudo +ethernet device that routes network traffic through a channel on the corosync knet network +(NOT cpg or any corosync internal service) to other nodes in the cluster. This allows +applications to take advantage of knet features such as multipathing, automatic failover, +link switching etc. Note that libnozzle is not a reliable transport, but you can tunnel TCP +through it for reliable communications. +.br +libnozzle also supports optional interface up/down scripts that are kept under a +/etc/corosync/updown.d/ directory. See the knet documentation for more information. +.br +Only one nozzle device is allowed. +.br +The nozzle stanza takes several options: +.TP +name +The name of the network device to be created. On Linux this may be any name at all, other +platforms have restrictions on the name. +.TP +ipaddr +The IP address (IPv6 or IPv4) of the interface. The bottom part of this address will be replaced +by the local node's nodeid in conjunction with ipprefix. so, eg +ipaddr: 192.168.1.0 +ipprefix: 24 +will make nodeids 1,2,5 use IP addresses 192.168.1.1, 192.168.1.2 & 192.168.1.5. +If a prefix length of 16 is used then the bottom two bytes will be filled in with nodeid numbers. +IPv6 addresses must end in '::', the nodeid will be added after the two colons to make the +local IP address. +Only one IP address is currently supported in the corosync.conf file. Additional IP addresses +can be added in the ifup script if necessary. +.TP +ipprefix +specifies the IP address prefix for the nozzle device (see above) +.TP +macaddr +Specifies the MAC address prefix for the nozzle device. As for the IP address, the bottom part +of the MAC address will be filled in with the node id. In this case no prefix applies, the bottom +two bytes of the MAC address will always be overwritten with the node id. So specifying +macaddr: 54:54:12:24:12:12 on nodeid 1 will result in it having a MAC address of 54:54:12:24:00:01 + +.SH "TO ADD A NEW NODE TO THE CLUSTER" +For example to add a node with address 10.24.38.108 with nodeid 3. The node has the name NEW +(in DNS or /etc/hosts) and is not currently running corosync. The current corosync.conf nodelist +looks like this: +.PP +.nf +.RS +nodelist { + node { + nodeid: 1 + ring0_addr: 10.24.38.101 + name: node1 + } + node { + nodeid: 2 + ring0_addr: 10.24.38.102 + name: node2 + + } +} +.RE +.fi +.PP +Add a new entry for the node below the existing nodes. Node entries don't have +to be in nodeid order, but it will help keep you sane. So the nodelist now looks like this: +.PP +.nf +.RS +nodelist { + node { + nodeid: 1 + ring0_addr: 10.24.38.101 + name: node1 + } + node { + nodeid: 2 + ring0_addr: 10.24.38.102 + name: node2 + + } + node { + nodeid: 3 + ring0_addr: 10.24.38.108 + name: NEW + + } +} +.RE +.fi +.PP + +.PP +This file must then be copied onto all three nodes - the existing two nodes, and the new one. +On one of the existing corosync nodes, tell corosync to re-read the updated config file into memory: +.PP +.nf +.RS +corosync-cfgtool -R +.RE +.fi +.PP +This command only needs to be run on one node in the cluster. You may then start corosync on the NEW node +and it should join the cluster. If this doesn't work as expected then check the communications between all +three nodes is working, and check the syslog files on all nodes for more information. It's important to note +that the key bit of information about a node failing to join might be on a different node than you expect. + +.SH "TO REMOVE A NODE FROM THE CLUSTER" +This is the reverse procedure to 'Adding a node' above. First you need to shut down the node you will +be removing from the cluster. +.PP +.nf +.RS +corosync-cfgtool -H +.RE +.fi + + +.PP +Then delete the nodelist stanza from corosync.conf and finally update corosync on the remaining nodes by +running +.PP +.nf +.RS +corosync-cfgtool -R +.RE +.fi +.TP +on one of them. + +.SH "ADDRESS RESOLUTION" +corosync resolves ringX_addr names/IP addresses using the getaddrinfo(3) call with respect +of totem.ip_version setting. + +getaddrinfo() function uses a sophisticated algorithm to sort node addresses into a preferred +order and corosync always chooses the first address in that list of the required family. +As such it is essential that your DNS or /etc/hosts files are correctly configured so that +all addresses for ringX appear on the same network (or are reachable with minimal hops) +and over the same IP protocol. If this is not the case then some nodes might not be able +to join the cluster. It is possible to override the search order used +by getaddrinfo() using the configuration file /etc/gai.conf(5) if necessary, +but this is not recommended. + +If there is any doubt about the order of addresses returned from getaddrinfo() then it might be simpler to use +IP addresses (v4 or v6) in the ringX_addr field. + +.SH "FILES" +.TP +/etc/corosync/corosync.conf +The corosync executive configuration file. + +.SH "SEE ALSO" +.BR corosync_overview (7), +.BR votequorum (5), +.BR corosync-qdevice (8), +.BR logrotate (8) +.BR getaddrinfo (3) +.BR gai.conf (5) +.PP diff --git a/man/corosync.xml.5 b/man/corosync.xml.5 new file mode 100644 index 0000000..a63889a --- /dev/null +++ b/man/corosync.xml.5 @@ -0,0 +1,72 @@ +.\"/* +.\" * Copyright (c) 2011 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 COROSYNC_XML 5 2011-12-16 "corosync XML config Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +corosync.xml - XML version of corosync executive configuration file + +.SH SYNOPSIS +/etc/corosync/corosync.xml + +.SH DESCRIPTION +The corosync.xml is XML version of corosync.conf file. It is processed by +.B corosync-xmlproc (8) +to generate valid conf file. + +File must be valid XML. File starts with root element +.B corosync +which can contain same arguments as described in +.B corosync.conf (5). + +Within corosync tag are other tags which are processed as follows: +.TP +- Every tag is start of new directive +.TP +- Every tag attribute is one of options in directive +.TP +- Directive is automatically closed +.TP +- Sub-tags are processed same and stays within directive +.PP +For example, see /etc/corosync/corosync.xml.example + +.SH "FILES" +.TP +/etc/corosync/corosync.xml +XML version of the corosync executive configuration file. + +.SH "SEE ALSO" +.BR corosync_overview (7), +.BR corosync.conf (5), +.BR corosync-xmlproc (8) +.PP diff --git a/man/corosync_overview.7 b/man/corosync_overview.7 new file mode 100644 index 0000000..fbe52a1 --- /dev/null +++ b/man/corosync_overview.7 @@ -0,0 +1,176 @@ +.\"/* +.\" * Copyright (c) 2005 MontaVista Software, Inc. +.\" * Copyright (c) 2006-2023 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_OVERVIEW 7 2018-11-13 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +corosync_overview \- Corosync overview +.SH OVERVIEW +The corosync project's purpose is to implement and support a production quality +Revised BSD licensed implementation of a high performance low overhead high +availability development toolkit. + +Faults occur for various reasons: +.PP +* Application Faults +.PP +* Middleware Faults +.PP +* Operating System Faults +.PP +* Hardware Faults + +The major focus of high availability in the past has been to mask hardware +faults. Faults in other components of the system have gone unsolved until +Corosync. Corosync is designed for applications to replicate their state to +up to 16 processors. The processors all contain a replica of the application +state. + +The corosync project provides a group message API called CPG. +The project developers recommend CPG be used for most applications. The CPG +service implements a closed group messaging model presenting extended virtual +synchrony guarantees. + +To manage conditions where the process executing the CPG application exchange +fails, we provide the Simple Availability Manager (sam) to provide simple +application restart. + +.SH QUICKSTART +The corosync executive must be configured. In the directory conf in the +source distribution are several files that must be copied to the /etc/corosync +directory. If corosync is packaged by a distro, this may be complete. + +The directory contains the file corosync.conf. Please read the corosync.conf(5) +man page for details on the configuration options. The corosync project will +work out of the box with the default configuration options, although the +administrator may desire different options. + +The corosync executive uses cryptographic techniques to ensure authenticity +and privacy of the messages. In order for corosync to be secure and operate, +a private key must be generated and shared to all processors. + +First generate the key on one of the nodes: + +.nf +unix# corosync-keygen +Corosync Cluster Engine Authentication key generator. +Gathering 2048 bits for key from /dev/urandom. +Writing corosync key to /etc/corosync/authkey. +.fi + +After this operation, a private key will be in the file /etc/corosync/authkey. +This private key must be copied to every processor in the cluster. If the +private key isn't the same for every node, those nodes with nonmatching private +keys will not be able to join the same configuration. + +Copy the key to some security transportable storage or use ssh to transmit the +key from node to node. Then install the key with the command: + +unix#: install -D --group=0 --owner=0 --mode=0400 /path_to_authkey/authkey /etc/corosync/authkey + +If a message "Invalid digest" appears from the corosync executive, the keys +are not consistent between processors. + +Finally run the corosync executive. If corosync is packaged from a distro, it +may be set to start on system start. It may also be turned off by default in +which case the init script for corosync must be enabled. + +.SH USING LIBRARIES +The corosync libraries have header files which must be included in the +developer's application. Once the header file is included, the developer can +reference the corosync interfaces. + +The corosync project recommends that distros place include files in +/usr/include/corosync. + +.SH IPv6 +The corosync project supports both IPv4 and IPv6 network addresses. When using +knet as the transport each link should have the same IP family, but different links +can have different families (eg link 0 could be all IPv4, and link 1 all IPv6). +When using UDP/UDPU the single link should use the same family on all nodes. + +To configure a host for IPv6, use the ifconfig program to add interfaces: +box20: ifconfig eth0 add fec0::1:a800:4ff:fe00:20/64 +box30: ifconfig eth0 add fec0::1:a800:4ff:fe00:30/64 + +If the /64 is not specified, a route for the IPv6 network will not be configured +which will cause significant problems. Make sure a route is available for +IPv6 traffic. + +.SH ARCHITECTURE +The corosync libraries are a thin IPC interface to the corosync executive. The +corosync executive implements the functionality of the corosync APIs for +distributed computing. + +The corosync executive uses the Totem extended virtual synchrony protocol. The +advantage to the end user is excellent performance characteristics and a proven +protocol with excellent reliability. This protocol connects the processors +in a configuration together so they may communicate. + +.SH SECURITY +The corosync executive optionally encrypts and signs all messages sent +over the network. For more details see +.B crypto_model, +.B crypto_hash +and +.B crypto_cipher +options in the +.BR corosync.conf (5). + +If membership messages can be captured by intruders, it is possible to execute +a denial of service attack on the cluster. In this scenario, the cluster is +likely already compromised and a DoS attack is the least of the administration's +worries. + +The security in corosync does not offer perfect forward secrecy because the keys +are reused. It may be possible for an intruder to determine the shared key by +capturing packets in an automated fashion. No such automated attack has +been published as of yet. In this scenario, the cluster is likely already +compromised to allow the long-term capture of transmitted data. + +For security reasons, the corosync executive binary should NEVER +be setuid or setgid in the filesystem. + +.SH BUGS +None that are known. + +.SH "SEE ALSO" +.BR corosync.conf (5), +.BR corosync-keygen (8), +.BR corosync_quorumtool (8), +.BR corosync_cfgtool (8), +.BR corosync_cpgtool (8), +.BR corosync_cmaptool (8), +.BR cpg_overview (3), +.BR sam_overview (3) +.PP diff --git a/man/cpg_context_get.3.in b/man/cpg_context_get.3.in new file mode 100644 index 0000000..712fe75 --- /dev/null +++ b/man/cpg_context_get.3.in @@ -0,0 +1,68 @@ +.\"/* +.\" * Copyright (c) 2007 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 CPG_CONTEXT_GET 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_context_get \- Gets the context variable for a CPG instance +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_context_get(cpg_handle_t " handle ", void **" context "); +.SH DESCRIPTION +The +.B cpg_context_get +function is used to retrieve the context variable previously stored using +.B cpg_context_set(3) +.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 (3), +.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_context_set.3.in b/man/cpg_context_set.3.in new file mode 100644 index 0000000..7c373a4 --- /dev/null +++ b/man/cpg_context_set.3.in @@ -0,0 +1,69 @@ +.\"/* +.\" * Copyright (c) 2007 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 CPG_CONTEXT_SET 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_context_set \- Sets the context variable for a CPG instance +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_context_set(cpg_handle_t " handle ", void *" context "); +.SH DESCRIPTION +The +.B cpg_context_set +function is used to set the context variable for a cpg instance. It has no +meaning inside libcpg itself and will not be touched by the library. It can +be retrieved using +.B cpg_context_get(3) +.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 (3), +.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_dispatch.3.in b/man/cpg_dispatch.3.in new file mode 100644 index 0000000..66f4606 --- /dev/null +++ b/man/cpg_dispatch.3.in @@ -0,0 +1,111 @@ +.\"/* +.\" * Copyright (c) 2006 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 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 <corosync/cpg.h> +.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 +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 (3), +.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_fd_get.3.in b/man/cpg_fd_get.3.in new file mode 100644 index 0000000..ce087d4 --- /dev/null +++ b/man/cpg_fd_get.3.in @@ -0,0 +1,75 @@ +.\"/* +.\" * Copyright (c) 2006 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 CPG_FD_GET 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_fd_get \- Dispatches callbacks from the CPG service +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_fd_get(cpg_handle_t " handle ", int *" fd "); +.SH DESCRIPTION +The +.B cpg_fd_get +function is used to retrieve the file descriptor that may be used with the poll +system call to determine when +.B cpg_dispatch(3) +won't block. The +.I handle +argument may not be used directly with +.B poll +because it is not the file descriptor, but instead an internal identifier used +by the CPG library. +.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 (3), +.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_finalize.3.in b/man/cpg_finalize.3.in new file mode 100644 index 0000000..215c701 --- /dev/null +++ b/man/cpg_finalize.3.in @@ -0,0 +1,71 @@ +.\"/* +.\" * Copyright (c) 2006 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 CPG_FINALIZE 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_finalize \- Terminate a connection to the CPG service +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_finalize(cpg_handle_t " handle "); +.SH DESCRIPTION +The +.B cpg_finalize +function is used to close a connection to the closed process group API. +Once the connection is finalized, the handle may not be used again by applications. +No more callbacks will be dispatched from the +.B cpg_dispatch function. +.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 (3), +.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 new file mode 100644 index 0000000..38c7de5 --- /dev/null +++ b/man/cpg_initialize.3.in @@ -0,0 +1,177 @@ +.\"/* +.\" * Copyright (c) 2006-2019 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 CPG_INITIALIZE 3 2019-04-16 "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 <corosync/cpg.h> +.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 +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 (this value is not +set for the member_list items). +.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() +CPG_REASON_UNDEFINED - a special value used for the member_list items +.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 (3), +.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 new file mode 100644 index 0000000..af1b3b3 --- /dev/null +++ b/man/cpg_iteration_finalize.3.in @@ -0,0 +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 <corosync/cpg.h>\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 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 (3) diff --git a/man/cpg_iteration_initialize.3.in b/man/cpg_iteration_initialize.3.in new file mode 100644 index 0000000..3f0f439 --- /dev/null +++ b/man/cpg_iteration_initialize.3.in @@ -0,0 +1,96 @@ +.\"/* +.\" * 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_INITIALIZE" 3 "05/03/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cpg_iteration_initialize \- Initialize iterator for members of CPG + +.SH SYNOPSIS +.P +\fB#include <corosync/cpg.h>\fR + +.P +\fBcs_error_t +cpg_iteration_initialize (cpg_handle_t \fIhandle\fB, cpg_iteration_type_t \fIiteration_type\fB, +const struct cpg_name *\fIgroup\fB, cpg_iteration_handle_t *\fIcpg_iteration_handle\fB);\fR + +.SH DESCRIPTION +.P +The +.B cpg_iteration_initialize +function is used to initialize iteration of CPG members. +The +.I handle +argument is connection to CPG database obtained by calling +.B cpg_initialize(3) +function. +.I iteration_type +is used for limit number of returned items and can be one of: +.PP +\fBCPG_ITERATION_NAME_ONLY\fR - only name of used groups are returned +.PP +\fBCPG_ITERATION_ONE_GROUP\fR - only members group with name \fIgroup\fR are returned +.PP +\fBCPG_ITERATION_ALL\fR - all members are returned + +The +.I group +parameter is used only with \fBCPG_ITERATION_ONE_GROUP\fR and it's name of group with +members to iterate. For other \fIiteration_type\fR, this parameter must be NULL. + +.B cpg_iteration_initialize +is used only for initialize context for future +.B cpg_iteration_next(3) +calls and handle needed for that function is returned in +.I cpg_iteration_handle +variable. When you have finished iteration over objects, call +.B cpg_iteration_finalize(3) +function to free up memory associated with iteration. + +.SH RETURN VALUE +This call returns the CS_OK value if successful. If \fIcpg_iteration_handle\fR is NULL, +\fBCS_ERR_INVALID_PARAM\fR error is returned. Same error is returned when \fIiteration_type\fR +is \fBCPG_ITERATION_ONE_GROUP\fR, but \fIgroup\fR is NULL, or when \fIgroup\fR is not NULL and +\fIiteration_type\fR is not \fBCPG_ITERATION_ONE_GROUP\fR. If there is not enough memory +for internal store of data, \fBCS_ERR_NO_MEMORY\fR is returned. \fBCS_ERR_BAD_HANDLE\fR can +be returned, if \fIhandle\fR is not valid handle. + +.SH COMMON IPC ERRORS +@COMMONIPCERRORS@ +.SH "SEE ALSO" +.BR cpg_iteration_next (3), +.BR cpg_iteration_finalize (3), +.BR cpg_initialize (3), +.BR cpg_overview (3) diff --git a/man/cpg_iteration_next.3.in b/man/cpg_iteration_next.3.in new file mode 100644 index 0000000..c618802 --- /dev/null +++ b/man/cpg_iteration_next.3.in @@ -0,0 +1,85 @@ +.\"/* +.\" * 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_NEXT" 3 "05/03/2012" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +cpg_iteration_next \- Return next item in iteration of CPG + +.SH SYNOPSIS +.P +\fB#include <corosync/cpg.h>\fR + +.P +\fBcs_error_t +cpg_iteration_next (cpg_iteration_handle_t \fIhandle\fB, struct cpg_iteration_description_t *\fIdescription\fB);\fR + +.SH DESCRIPTION +.P +The +.B cpg_iter_next +function is used to get next value in iteration. The +.I handle +argument is iterator handle obtained by +.B cpg_iteration_initalize(3) +function. +.I description +is pointer to structure with following definition: +.IP +.RS +.ne 18 +.nf +.PP +struct cpg_iteration_description_t { + struct cpg_name group; + uint32_t nodeid; + uint32_t pid; +}; +.ta +.fi +.RE +.IP +.PP + +where \fBgroup\fR is name of group, \fBnodeid\fR is ID of connected node and \fBpid\fR is pid of +connected process. If iteration was initialized with \fBCPG_ITERATION_NAME_ONLY\fR iteration +type, both \fBnodeid\fR and \fBpid\fR are 0. + +.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 cpg_iteration_initialize (3), +.BR cpg_overview (3) diff --git a/man/cpg_join.3.in b/man/cpg_join.3.in new file mode 100644 index 0000000..4496ec3 --- /dev/null +++ b/man/cpg_join.3.in @@ -0,0 +1,112 @@ +.\"/* +.\" * Copyright (c) 2006 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 CPG_JOIN 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_join \- Joins one or more groups in the CPG library +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_join(cpg_handle_t " handle ", struct cpg_name *" group "); +.SH DESCRIPTION +The +.B cpg_join +function is used to join one group. When a group is joined, the +.B cpg_mcast_joined(3) +is called internally to multicast to the groups joined in the argument +.I handle. +The process will also get notifications of other processes joining +and leaving the group. +Messages that are sent to any of the groups joined to the parameter +.I handle +will be delivered by +.B cpg_dispatch(3). +.PP +This function may be only be called once for each handle. When a group has been joined +the process will start to receive callbacks relating to messages sent from members +of the group or notifications of processes joining or leaving the group. +.PP +Note that more than one process on each node can join a CPG group and +each will receive its own copy of any messages sent using +.I cpg_mcast_joined() +and its own confchg callback. +.PP + +The argument +.I group +is used to specify the group to join. + + +The +.I groups +argument is of the type struct cpg_name which is defined by the structure: + +.IP +.RS +.ne 18 +.nf +.ta 4n 30n 33n +struct cpg_name { + int length; + char value[128]; +}; +.ta +.fi +.RE +.IP +.PP +.PP +.SH RETURN VALUE +This call returns the CS_OK value if successful, CS_ERR_INVALID_PARAM if the +handle is already joined to a group. +.PP +.SH ERRORS +Not all errors are documented. +.SH "SEE ALSO" +.BR cpg_overview (3), +.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_leave.3.in b/man/cpg_leave.3.in new file mode 100644 index 0000000..253e343 --- /dev/null +++ b/man/cpg_leave.3.in @@ -0,0 +1,77 @@ +.\"/* +.\" * Copyright (c) 2006 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 CPG_LEAVE 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_leave \- Leave a group in the CPG library +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_leave(cpg_handle_t " handle ", struct cpg_name *" group "); +.SH DESCRIPTION +The +.B cpg_leave +function is used to leave a group. Once a group has been left the process will +no longer receive messages or notifications about events in that group. +Note that a process is only deemed to have left the group once it has been +notified (by its confchg callback) that is has left. +So expect to receive at least one confchg callback after calling this function. + +The argument +.I group +is used to specify the group to leave. It is currently ignored as only one group +can be joined per handle. It is included here for to allow for future development. + +.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 (3), +.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_local_get.3.in b/man/cpg_local_get.3.in new file mode 100644 index 0000000..1e01779 --- /dev/null +++ b/man/cpg_local_get.3.in @@ -0,0 +1,72 @@ +.\"/* +.\" * Copyright (c) 2007 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 CPG_LOCAL_GET 3 2007-06-12 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_local_get \- Returns the local node id +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_local_get(cpg_handle_t " handle ", unsigned int *" local_nodeid "); +.SH DESCRIPTION +The +.B cpg_local_get +function is used to determine the local node's identifier. +.BR +The argument +.I handle +is used to reference the cpg instantiation. +The argument +.I local_nodeid +will return the 32 bit node id. +.PP +.SH ERRORS +The errors are undocumented. +.SH "SEE ALSO" +.BR cpg_overview (3), +.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_mcast_joined.3.in b/man/cpg_mcast_joined.3.in new file mode 100644 index 0000000..d4f8867 --- /dev/null +++ b/man/cpg_mcast_joined.3.in @@ -0,0 +1,142 @@ +.\"/* +.\" * Copyright (c) 2006 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 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 +.nf +.B #include <sys/uio.h> +.B #include <corosync/cpg.h> +.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 entries 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 (3), +.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_membership_get.3.in b/man/cpg_membership_get.3.in new file mode 100644 index 0000000..75c1a74 --- /dev/null +++ b/man/cpg_membership_get.3.in @@ -0,0 +1,81 @@ +.\"/* +.\" * Copyright (c) 2006 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 CPG_MEMBERSHIP_GET 3 2006-02-06 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_membership_get \- Returns a list of members of a CPG group +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_membership_get(cpg_handle_t " handle ", struct cpg_name *" groupName ", struct cpg_address *" member_list ", int *" member_list_entries "); +.SH DESCRIPTION +The +.B cpg_membership_get +function is used to determine the current processes in the configuration. You probably will not +need to call this function much as one of the first confchg callbacks you will get will be from +the cpg_join() function containing your process. +.BR +The argument +.I handle +is used to reference the cpg instantiation. +The argument +.I groupName +will return the name of the group +The argument +.I member_list +will return the list of processors in the current membership. +The argument +.I member_list_entries +should be set with the size of member_list and will return the size of the +member_list after return from the function. +.PP +.SH ERRORS +The errors are undocumented. +.SH "SEE ALSO" +.BR cpg_overview (3), +.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 new file mode 100644 index 0000000..17ca16a --- /dev/null +++ b/man/cpg_model_initialize.3.in @@ -0,0 +1,233 @@ +.\"/* +.\" * Copyright (c) 2010-2019 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Jan Friesse <jfriesse@redhat.com> +.\" * Author: Christine Caulfield <ccaulfie@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 CPG_MODEL_INITIALIZE 3 2019-04-16 "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 <corosync/cpg.h> +.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 +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 (this value is not +set for the member_list items). +.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() +CPG_REASON_UNDEFINED - a special value used for the member_list items +.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 (3), +.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_overview.3 b/man/cpg_overview.3 new file mode 100644 index 0000000..d36d65f --- /dev/null +++ b/man/cpg_overview.3 @@ -0,0 +1,82 @@ +.\"/* +.\" * Copyright (c) 2006-2009 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 CPG_OVERVIEW 3 2009-4-15 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_overview \- CPG library overview +.SH OVERVIEW +The CPG library is delivered with the corosync project. This library is used +to create distributed applications that operate properly during cluster +partitions, merges, and faults. +.PP +The library provides a mechanism to: +.PP +* handle abstraction for multiple instances of a CPG library in one application +.PP +* join one or more groups +.PP +* leave one or more groups +.PP +* Deliver messages to members of that group +.PP +* Deliver configuration changes +.PP +* Iterate members of groups +.PP +.SH SECURITY +If encryption is enabled in corosync.conf, the CPG library will encrypt and +authenticate message contents. Applications must run as the ais user to be +validated by corosync on IPC connection, otherwise they will be unable to +access the corosync services. + +.SH "SEE ALSO" +.BR cpg_overview (3), +.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_model_initialize (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_iteration_initialize (3), +.BR cpg_iteration_next (3), +.BR cpg_iteration_finalize (3) +.PP diff --git a/man/cpg_zcb_alloc.3.in b/man/cpg_zcb_alloc.3.in new file mode 100644 index 0000000..31b1776 --- /dev/null +++ b/man/cpg_zcb_alloc.3.in @@ -0,0 +1,85 @@ +.\"/* +.\" * Copyright (c) 2009 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 "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 <corosync/cpg.h> +.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 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 (3), +.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_free.3.in b/man/cpg_zcb_free.3.in new file mode 100644 index 0000000..ef68c39 --- /dev/null +++ b/man/cpg_zcb_free.3.in @@ -0,0 +1,77 @@ +.\"/* +.\" * Copyright (c) 2009 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 "CPG_ZCB_FREE" 3 "2009-04-15" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +cpg_zcb_free \- Frees a zero copy buffer +.SH SYNOPSIS +.B #include <corosync/cpg.h> +.sp +.BI "int cpg_zcb_fre(cpg_handle_t " handle ", void *" buffer "); +.SH DESCRIPTION +The +.B cpg_zcb_free +function will free a zero copy buffer. + +.PP +The argument +.I handle +describes the handle on which the buffer will be allocated. +.PP +The argument +.I buffer +is the zero copy buffer to free. + +.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 (3), +.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 new file mode 100644 index 0000000..42141b4 --- /dev/null +++ b/man/cpg_zcb_mcast_joined.3.in @@ -0,0 +1,127 @@ +.\"/* +.\" * Copyright (c) 2009 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 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 <sys/uio.h> +.B #include <corosync/cpg.h> +.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 (3), +.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/index.html b/man/index.html new file mode 100644 index 0000000..21326dc --- /dev/null +++ b/man/index.html @@ -0,0 +1,400 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<html lang="en" dir="ltr"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15"> + <meta name="keywords" content="corosync, documentation, manual"> + <meta name="author" content="many"> + <meta name="copyright" content="© 2009 Red Hat, Inc."> + <!-- meta http-equiv="Content-Style-Type" content="text/css" --> + <meta name="date" content="2009-03-17T13:50:00+01:00"> + + <title>Corosync Documentation</title> + </head> + + <body> + + <h1>Welcome to the corosync project's manual pages.</h1> + + <p> + <h2>Daemon, tools and configuration</h2> + + <a href="corosync_overview.7.html">corosync_overview(7)</a>: + Overview of the corosync system. + <br> + + <a href="corosync.conf.5.html">corosync.conf(5)</a>: + Description of configuration options for corosync. + <br> + + <a href="corosync.xml.5.html">corosync.xml(5)</a>: + Description of configuration options for corosync xml config format. + <br> + + <a href="votequorum.5.html">votequorum(5)</a>: + Description of configuration options for votequorum module in corosync.conf + <br> + + <a href="corosync.8.html">corosync(8)</a>: + Description of corosync daemon. + <br> + + <a href="corosync-blackbox.8.html">corosync-blackbox(8)</a>: + Description of corosync-blackbox tool. + <br> + + <a href="corosync-cfgtool.8.html">corosync-cfgtool(8)</a>: + Description of corosync-cfgtool tool. + <br> + + <a href="corosync-cpgtool.8.html">corosync-cpgtool(8)</a>: + Description of corosync-cpgtool tool. + <br> + + <a href="corosync-keygen.8.html">corosync-keygen(8)</a>: + Description of corosync-keygen tool. + <br> + + <a href="corosync-notifyd.8.html">corosync-notifyd(8)</a>: + Description of corosync-notifyd tool. + <br> + + <a href="corosync-cmapctl.8.html">corosync-cmapctl(8)</a>: + Description of corosync-cmapctl tool. + <br> + + <a href="cmap_keys.7.html">cmap_keys(7)</a>: + Overview of keys stored in the Configuration Map. + <br> + + <a href="corosync-quorumtool.8.html">corosync-quorumtool(8)</a>: + Description of corosync-quorumtool tool. + <br> + + <a href="corosync-xmlproc.8.html">corosync-xmlproc(8)</a>: + Description of corosync-xmlproc tool. + <br> + </p> + + <p> + <h2>Developers API references</h2> + + <h3>CPG service</h3> + + <a href="cpg_overview.3.html">cpg_overview(3)</a>: + Overview of the cpg extended virtual synchrony group + communication toolkit. + <br> + + <a href="cpg_initialize.3.html">cpg_initialize(3)</a>: + Description of the cpg_initialize interface. + <br> + + <a href="cpg_finalize.3.html">cpg_finalize(3)</a>: + Description of the cpg_finalize interface. + <br> + + <a href="cpg_dispatch.3.html">cpg_dispatch(3)</a>: + Description of the cpg_dispatch interface. + <br> + + <a href="cpg_fd_get.3.html">cpg_fd_get(3)</a>: + Description of the cpg_fd_get interface. + <br> + + <a href="cpg_join.3.html">cpg_join(3)</a>: + Description of the cpg_join interface. + <br> + + <a href="cpg_leave.3.html">cpg_leave(3)</a>: + Description of the cpg_leave interface. + <br> + + <a href="cpg_mcast_joined.3.html">cpg_mcast_joined(3)</a>: + Description of the cpg_mcast_joined interface. + <br> + + <a href="cpg_membership_get.3.html">cpg_membership_get(3)</a>: + Description of the cpg_membership_get interface. + <br> + + <a href="cpg_local_get.3.html">cpg_local_get(3)</a>: + Description of the cpg_local_get interface. + <br> + + <a href="cpg_iteration_initialize.3.html">cpg_iteration_initialize(3)</a>: + Description of the cpg_iteration_initialize interface. + <br> + + <a href="cpg_iteration_next.3.html">cpg_iteration_next(3)</a>: + Description of the cpg_iteration_next interface. + <br> + + <a href="cpg_iteration_finalize.3.html">cpg_iteration_finalize(3)</a>: + Description of the cpg_iteration_finalize interface. + <br> + + <a href="cpg_context_get.3.html">cpg_context_get(3)</a>: + Gets the context variable for a CPG instance. + <br> + + <a href="cpg_context_set.3.html">cpg_context_set(3)</a>: + Sets the context variable for a CPG instance. + <br> + + <a href="cpg_model_initialize.3.html">cpg_model_initialize(3)</a>: + Create a new connection to the CPG service + <br> + + <a href="cpg_zcb_alloc.3.html">cpg_zcb_alloc(3)</a>: + Allocates a zero copy buffer. + <br> + + <a href="cpg_zcb_free.3.html">cpg_zcb_free(3)</a>: + Frees a zero copy buffer. + <br> + + <a href="cpg_zcb_mcast_joined.3.html">cpg_zcb_mcast_joined(3)</a>: + Multicasts a zero copy buffer to all groups joined to a handle. + <br> + + <h3>SAM service</h3> + + <a href="sam_overview.3.html">sam_overview(3)</a>: + Description of sam_overview interface. + <br> + + <a href="sam_data_getsize.3.html">sam_data_getsize(3)</a>: + Description of sam_data_getsize interface. + <br> + + <a href="sam_data_restore.3.html">sam_data_restore(3)</a>: + Description of sam_data_restore interface. + <br> + + <a href="sam_data_store.3.html">sam_data_store(3)</a>: + Description of sam_data_store interface. + <br> + + <a href="sam_finalize.3.html">sam_finalize(3)</a>: + Description of sam_finalize interface. + <br> + + <a href="sam_hc_callback_register.3.html">sam_hc_callback_register(3)</a>: + Description of sam_hc_callback_register interface. + <br> + + <a href="sam_hc_send.3.html">sam_hc_send(3)</a>: + Description of sam_hc_send interface. + <br> + + <a href="sam_initialize.3.html">sam_initialize(3)</a>: + Description of sam_initialize interface. + <br> + + <a href="sam_mark_failed.3.html">sam_mark_failed(3)</a>: + Description of sam_mark_failed interface. + <br> + + <a href="sam_register.3.html">sam_register(3)</a>: + Description of sam_register interface. + <br> + + <a href="sam_start.3.html">sam_start(3)</a>: + Description of sam_start interface. + <br> + + <a href="sam_stop.3.html">sam_stop(3)</a>: + Description of sam_stop interface. + <br> + + <a href="sam_warn_signal_set.3.html">sam_warn_signal_set(3)</a>: + Description of sam_warn_signal_set interface. + <br> + + <h3>QUORUM service</h3> + + <a href="quorum_overview.3.html">quorum_overview(3)</a>: + An overview of the quorum service + <br> + + <a href="quorum_initialize.3.html">quorum_initialize(3)</a>: + Description of quorum_initialize interface. + <br> + + <a href="quorum_finalize.3.html">quorum_finalize(3)</a>: + Description of quorum_finalize interface. + <br> + + <a href="quorum_getquorate.3.html">quorum_getquorate(3)</a>: + Description of quorum_getquorate interface. + <br> + + <a href="quorum_trackstart.3.html">quorum_trackstart(3)</a>: + Description of quorum_trackstart interface. + <br> + + <a href="quorum_trackstop.3.html">quorum_trackstop(3)</a>: + Description of quorum_trackstop interface. + <br> + + <a href="quorum_fd_get.3.html">quorum_fd_get(3)</a>: + Description of quorum_fd_get interface. + <br> + + <a href="quorum_dispatch.3.html">quorum_dispatch(3)</a>: + Description of quorum_dispatch interface. + <br> + + <a href="quorum_context_set.3.html">quorum_context_set(3)</a>: + Description of quorum_context_set interface. + <br> + + <a href="quorum_context_get.3.html">quorum_context_get(3)</a>: + Description of quorum_context_get interface. + <br> + + <h3>VOTEQUORUM service</h3> + + <a href="votequorum_overview.3.html">votequorum_overview(3)</a>: + An overview of the vote-based quorum service + <br> + + <a href="votequorum_initialize.3.html">votequorum_initialize(3)</a>: + Description of the votequorum_initialize interface. + <br> + + <a href="votequorum_finalize.3.html">votequorum_finalize(3)</a>: + Description of the votequorum_finalize interface. + <br> + + <a href="votequorum_getinfo.3.html">votequorum_getinfo(3)</a>: + Description of the votequorum_getinfo interface. + <br> + + <a href="votequorum_trackstart.3.html">votequorum_trackstart(3)</a>: + Description of the votequorum_trackstart interface. + <br> + + <a href="votequorum_trackstop.3.html">votequorum_trackstop(3)</a>: + Description of the votequorum_trackstop interface. + <br> + + <a href="votequorum_fd_get.3.html">votequorum_fd_get(3)</a>: + Description of the votequorum_fd_get interface. + <br> + + <a href="votequorum_dispatch.3.html">votequorum_dispatch(3)</a>: + Description of the votequorum_dispatch interface. + <br> + + <a href="votequorum_context_set.3.html">votequorum_context_set(3)</a>: + Description of the votequorum_context_set interface. + <br> + + <a href="votequorum_context_get.3.html">votequorum_context_get(3)</a>: + Description of the votequorum_context_get interface. + <br> + + <a href="votequorum_setexpected.3.html">votequorum_setexpected(3)</a>: + Description of the votequorum interface. + <br> + + <a href="votequorum_setvotes.3.html">votequorum_setvotes(3)</a>: + Description of the votequorum interface. + <br> + + <a href="votequorum_qdevice_master_wins.3.html">votequorum_qdevice_master_wins(3)</a>: + Sets or clears quorum device master_wins flag. + <br> + + <a href="votequorum_qdevice_poll.3.html">votequorum_qdevice_poll(3)</a>: + Tells votequorum the result of the quorum device poll. + <br> + + <a href="votequorum_qdevice_register.3.html">votequorum_qdevice_register(3)</a>: + Registers a new quorum device. + <br> + + <a href="votequorum_qdevice_unregister.3.html">votequorum_qdevice_unregister(3)</a>: + Unregisters a new quorum device. + <br> + + <a href="votequorum_qdevice_update.3.html">votequorum_qdevice_update(3)</a>: + Updates quorum device name. + <br> + + <h3>CMAP service</h3> + + <a href="cmap_overview.3.html">cmap_overview(3)</a>: + An overview of the configuration map service. + <br> + + <a href="cmap_context_get.3.html">cmap_context_get(3)</a>: + Description of the cmap_context_get interface. + <br> + + <a href="cmap_context_set.3.html">cmap_context_set(3)</a>: + Description of the cmap_context_set interface. + <br> + + <a href="cmap_dec.3.html">cmap_dec(3)</a>: + Description of the cmap_dec interface. + <br> + + <a href="cmap_delete.3.html">cmap_delete(3)</a>: + Description of the cmap_delete interface. + <br> + + <a href="cmap_dispatch.3.html">cmap_dispatch(3)</a>: + Description of the cmap_dispatch interface. + <br> + + <a href="cmap_fd_get.3.html">cmap_fd_get(3)</a>: + Description of the cmap_fd_get interface. + <br> + + <a href="cmap_finalize.3.html">cmap_finalize(3)</a>: + Description of the cmap_finalize interface. + <br> + + <a href="cmap_get.3.html">cmap_get(3)</a>: + Description of the cmap_get interface. + <br> + + <a href="cmap_inc.3.html">cmap_inc(3)</a>: + Description of the cmap_inc interface. + <br> + + <a href="cmap_initialize.3.html">cmap_initialize(3)</a>: + Description of the cmap_initialize interface. + <br> + + <a href="cmap_iter_finalize.3.html">cmap_iter_finalize(3)</a>: + Description of the cmap_iter_finalize interface. + <br> + + <a href="cmap_iter_init.3.html">cmap_iter_init(3)</a>: + Description of the cmap_iter_init interface. + <br> + + <a href="cmap_iter_next.3.html">cmap_iter_next(3)</a>: + Description of the cmap_iter_next interface. + <br> + + <a href="cmap_set.3.html">cmap_set(3)</a>: + Description of the cmap_set interface. + <br> + + <a href="cmap_track_add.3.html">cmap_track_add(3)</a>: + Description of the cmap_track_add interface. + <br> + + <a href="cmap_track_delete.3.html">cmap_track_delete(3)</a>: + Description of the cmap_track_delete interface. + <br> + + </p> + + </body> +</html> diff --git a/man/ipc_common.sh.errors b/man/ipc_common.sh.errors new file mode 100644 index 0000000..55d4510 --- /dev/null +++ b/man/ipc_common.sh.errors @@ -0,0 +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 interrupted by a signal + +.B CS_ERR_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 complete the requested task diff --git a/man/quorum_context_get.3.in b/man/quorum_context_get.3.in new file mode 100644 index 0000000..e4c5cf1 --- /dev/null +++ b/man/quorum_context_get.3.in @@ -0,0 +1,62 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 QUORUM_CONTEXT_GET 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +quorum_context_get \- Gets the context variable for a QUORUM instance +.SH SYNOPSIS +.B #include <corosync/quorum.h> +.sp +.BI "int quorum_context_get(quorum_handle_t " handle ", void **" context ");" +.SH DESCRIPTION +The +.B quorum_context_get +function is used to retrieve the context variable previously stored using +.B quorum_context_set(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 (3), +.BR quorum_initialize (3), +.BR quorum_model_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_set (3), +.PP diff --git a/man/quorum_context_set.3.in b/man/quorum_context_set.3.in new file mode 100644 index 0000000..cdc1b3b --- /dev/null +++ b/man/quorum_context_set.3.in @@ -0,0 +1,64 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 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 <corosync/quorum.h> +.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 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 (3), +.BR quorum_initialize (3), +.BR quorum_model_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 new file mode 100644 index 0000000..c8b822a --- /dev/null +++ b/man/quorum_dispatch.3.in @@ -0,0 +1,98 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 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 <corosync/quorum.h> +.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 +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 (3), +.BR quorum_initialize (3), +.BR quorum_model_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_fd_get.3.in b/man/quorum_fd_get.3.in new file mode 100644 index 0000000..1f99399 --- /dev/null +++ b/man/quorum_fd_get.3.in @@ -0,0 +1,69 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 QUORUM_FD_GET 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +quorum_fd_get \- Dispatches callbacks from the quorum service +.SH SYNOPSIS +.B #include <corosync/quorum.h> +.sp +.BI "int quorum_fd_get(quorum_handle_t " handle ", int *" fd ");" +.SH DESCRIPTION +The +.B quorum_fd_get +function is used to retrieve the file descriptor that may be used with the poll +system call to determine when +.B quorum_dispatch(3) +won't block. The +.I handle +argument may not be used directly with +.B poll +because it is not the file descriptor, but instead an internal identifier used +by the quorum library. +.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 (3), +.BR quorum_initialize (3), +.BR quorum_model_initialize (3), +.BR quorum_finalize (3), +.BR quorum_getquorate (3), +.BR quorum_trackstart (3), +.BR quorum_trackstop (3), +.BR quorum_dispatch (3), +.BR quorum_context_set (3), +.BR quorum_context_get (3) +.PP diff --git a/man/quorum_finalize.3.in b/man/quorum_finalize.3.in new file mode 100644 index 0000000..d914b30 --- /dev/null +++ b/man/quorum_finalize.3.in @@ -0,0 +1,66 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 QUORUM_FINALIZE 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +quorum_finalize \- Terminate a connection to the quorum service +.SH SYNOPSIS +.B #include <corosync/quorum.h> +.sp +.BI "int quorum_finalize(quorum_handle_t " handle ");" +.SH DESCRIPTION +The +.B quorum_finalize +function is used to close a connection to the quorum API. +Once the connection is finalized, the handle may not be used again by applications. +No more callbacks will be dispatched from the +.B quorum_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 quorum_overview (3), +.BR quorum_initialize (3), +.BR quorum_model_initialize (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_set (3), +.BR quorum_context_get (3) +.PP diff --git a/man/quorum_getquorate.3.in b/man/quorum_getquorate.3.in new file mode 100644 index 0000000..281efdc --- /dev/null +++ b/man/quorum_getquorate.3.in @@ -0,0 +1,62 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 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 <corosync/quorum.h> +.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 +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 (3), +.BR quorum_initialize (3), +.BR quorum_model_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/quorum_initialize.3.in b/man/quorum_initialize.3.in new file mode 100644 index 0000000..91eb815 --- /dev/null +++ b/man/quorum_initialize.3.in @@ -0,0 +1,114 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 QUORUM_INITIALIZE 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +quorum_initialize \- Create a new connection to the Quorum service +.SH SYNOPSIS +.B #include <corosync/quorum.h> +.sp +.BI "int quorum_initialize(quorum_handle_t *" handle ", quorum_callbacks_t *" callbacks ", uint32_t *" quorum_type ");" +.SH DESCRIPTION +The +.B quorum_initialize +function is used to initialize a connection to the quorum API. +.PP +Each application may have several connections to the quorum 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 quorum service. +.PP +Every time the voting configuration changes (eg a node joins or leave the cluster) or the quorum status change, +the callback is called. +The callback function is described by the following type definitions: + +.nf +typedef void (*quorum_notification_fn_t) ( + quorum_handle_t handle, + uint32_t quorate, + uint64_t ring_seq, + uint32_t view_list_entries, + uint32_t *view_list + ); +.fi +.PP +The +.I callbacks +argument is of the type: + +.nf +typedef struct { + quorum_notification_fn_t quorum_notify_fn; +} quorum_callbacks_t; +.fi +.PP +The +.I quorum_type +argument is set to: + +.nf +#define QUORUM_FREE 0 +#define QUORUM_SET 1 +.fi +.PP +.I QUORUM_FREE +value means that no quorum algorithm is loaded and that no callbacks will take place. +.PP +.I QUORUM_SET +value means that one quorum algorithm is configured and that callbacks will take place. +.PP +When a configuration change occurs, the callback +is called from the +.B quorum_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 quorum_overview (3), +.BR quorum_model_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_set (3), +.BR quorum_context_get (3) +.PP diff --git a/man/quorum_model_initialize.3.in b/man/quorum_model_initialize.3.in new file mode 100644 index 0000000..0ac6c26 --- /dev/null +++ b/man/quorum_model_initialize.3.in @@ -0,0 +1,165 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Authors: Jan Friesse <jfriesse@redhat.com> +.\" * Fabio M. Di Nitto <fdinitto@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 QUORUM_MODEL_INITIALIZE 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +quorum_model_initialize \- Create a new connection to the Quorum service +.SH SYNOPSIS +.B #include <corosync/quorum.h> +.sp +.BI "cs_error_t quorum_model_initialize(quorum_handle_t *" handle ", quorum_model_t " model ", quorum_model_data_t *" model_data ", uint32_t *" quorum_type ",void *" context ");" +.SH DESCRIPTION +The +.B quorum_model_initialize +function is an enhanced way to initialize a connection to the quorum API. +.PP +Each application may have several connections to the quorum 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 quorum service. +.PP +The +.I model +is used to explicitly choose set of callbacks and internal parameters. Currently two models +.I QUORUM_MODEL_V0 +and +.I QUORUM_MODEL_V1 +are defined. +.I QUORUM_MODEL_V0 +exists only for compatibility reasons with +.B quorum_initialize(3) +function and it is not recommended to be used as an argument for +.B quorum_model_initialize(3). + +The Following description is focused only on +.I QUORUM_MODEL_V1 +model. + +.PP +Every time the voting configuration changes (eg a node joins or leave the cluster) or the quorum status changes +the quorum callback is called. +The quorum callback function is described by the following type definitions: + +.nf +typedef void (*quorum_v1_quorum_notification_fn_t) ( + quorum_handle_t handle, + uint32_t quorate, + struct quorum_ring_id ring_id, + uint32_t member_list_entries, + const uint32_t *member_list +); +.fi +.PP +Also every time when membership configuration changes (eg a node joins or leave the cluster) the node list change +callback is called before the quorum callback. +The node list change callback function is described by the following type definitions: + +.nf +typedef void (*quorum_v1_nodelist_notification_fn_t) ( + quorum_handle_t handle, + struct quorum_ring_id ring_id, + uint32_t member_list_entries, + const uint32_t *member_list, + uint32_t joined_list_entries, + const uint32_t *joined_list, + uint32_t left_list_entries, + const uint32_t *left_list +); +.fi +.PP +The +.I model_data +argument for +.I QUORUM_MODEL_V1 +is of the type: + +.nf +typedef struct { + quorum_model_t model; + quorum_v1_quorum_notification_fn_t quorum_notify_fn; + quorum_v1_nodelist_notification_fn_t nodelist_notify_fn; +} quorum_model_v1_data_t; +.fi + +It's not required (nor recommended) to set +.I model +field in the structure. It is also fine if only some of notification callbacks are +used (only these events will be delivered then). + +.PP +The +.I quorum_type +argument is set to: + +.nf +#define QUORUM_FREE 0 +#define QUORUM_SET 1 +.fi +.PP +.I QUORUM_FREE +value means that no quorum algorithm is loaded and that no callbacks will take place. +.PP +.I QUORUM_SET +value means that one quorum algorithm is configured and that callbacks will take place. +.PP +The +.I context +argument sets context same way as +.B quorum_context_set(3). +.PP +When a configuration change occurs, the callback +is called from the +.B quorum_dispatch(3) +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 quorum_overview (3), +.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_set (3), +.BR quorum_context_get (3) +.PP diff --git a/man/quorum_overview.3 b/man/quorum_overview.3 new file mode 100644 index 0000000..8c42b1a --- /dev/null +++ b/man/quorum_overview.3 @@ -0,0 +1,67 @@ +.\"/* +.\" * Copyright (c) 2008-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Authors: Christine Caulfield <ccaulfie@redhat.com> +.\" * Fabio M. Di Nitto <fdinitto@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 QUORUM_OVERVIEW 3 2020-02-14 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +quorum_overview \- Quorum Library Overview +.SH OVERVIEW +The quorum library is delivered with the corosync project. It is the external interface to +the quorum service. This service is loaded into all nodes in a corosync cluster and track +the quorum status of a node. In order for quorum service to be useful, a quorum provider +must be configured. +.PP +The library provides a mechanism to: +.PP +* Query the quorum status +.PP +* Receive notifications of quorum state changes +.PP +* Receive notifications of membership changes +.SH BUGS +No known bugs at the time of writing. The authors are from outerspace. Deal with it. +.SH "SEE ALSO" +.BR corosync-quorumtool (8), +.BR corosync.conf (5), +.BR votequorum (5), +.BR quorum_initialize (3), +.BR quorum_model_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_set (3), +.BR quorum_context_get (3) +.PP diff --git a/man/quorum_trackstart.3.in b/man/quorum_trackstart.3.in new file mode 100644 index 0000000..2474b10 --- /dev/null +++ b/man/quorum_trackstart.3.in @@ -0,0 +1,78 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 QUORUM_TRACKSTART 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +quorum_trackstart \- Enable callbacks notification. +.SH SYNOPSIS +.B #include <corosync/quorum.h> +.sp +.BI "int quorum_trackstart(quorum_handle_t *" handle ", unsigned int " flags ");" +.SH DESCRIPTION +The +.B quorum_trackstart +function is used to enable callbacks notification from the quorum API. +.PP +Every time the voting configuration changes (eg a node joins or leave the cluster) +or the quorum status change, the notification is queued. +.PP +The notification is dispatched via +.B quorum_dispatch() +function that will execute the callback. +.PP +The +.I flags +argument is defined by one or more of the following values and values can be bitwise-or'd + +.nf +#define CS_TRACK_CURRENT 0x01 +#define CS_TRACK_CHANGES 0x02 +#define CS_TRACK_CHANGES_ONLY 0x04 +.fi +.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 (3), +.BR quorum_initialize (3), +.BR quorum_model_initialize (3), +.BR quorum_finalize (3), +.BR quorum_getquorate (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/quorum_trackstop.3.in b/man/quorum_trackstop.3.in new file mode 100644 index 0000000..fc1f1ba --- /dev/null +++ b/man/quorum_trackstop.3.in @@ -0,0 +1,62 @@ +.\"/* +.\" * Copyright (c) 2012-2020 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 QUORUM_TRACKSTOP 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +quorum_trackstop \- Disable callbacks notification. +.SH SYNOPSIS +.B #include <corosync/quorum.h> +.sp +.BI "int quorum_trackstart(quorum_handle_t *" handle ");" +.SH DESCRIPTION +The +.B quorum_trackstop +function is used to disable callbacks notification from the quorum API. +.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 quorum_overview (3), +.BR quorum_initialize (3), +.BR quorum_model_initialize (3), +.BR quorum_finalize (3), +.BR quorum_getquorate (3), +.BR quorum_trackstart (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_getsize.3.in b/man/sam_data_getsize.3.in new file mode 100644 index 0000000..33d527e --- /dev/null +++ b/man/sam_data_getsize.3.in @@ -0,0 +1,68 @@ +.\"/* +.\" * 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_GETSIZE" 3 "04/15/2010" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_data_getsize \- Return size of stored data in bytes + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_data_getsize (size_t *\fIsize\fB);\fR + +.SH DESCRIPTION +.P +The \fBsam_data_getsize\fR function is used to return size of stored +data. Size is returned in bytes. If user data is NULL, zero is returned. +Function is intended to be used before \fBsam_data_restore(3)\fR call to +properly allocate buffer for restored 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_INVALID_PARAM +size parameter is NULL + +.SH "SEE ALSO" +.BR sam_data_store (3), +.BR sam_data_restore (3) diff --git a/man/sam_data_restore.3.in b/man/sam_data_restore.3.in new file mode 100644 index 0000000..32b816a --- /dev/null +++ b/man/sam_data_restore.3.in @@ -0,0 +1,77 @@ +.\"/* +.\" * 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_RESTORE" 3 "04/15/2010" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_data_restore \- Restore previously saved user data + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_data_restore (void *\fIdata\fB, size_t \fIsize\fB);\fR + +.SH DESCRIPTION +.P +The \fBsam_data_restore\fR function is used to restore data, previously +saved by calling \fBsam_data_store(3)\fR. Such data survives between instances. + +.P +The \fIdata\fR parameter is pointer to memory initialized by caller. Stored data +are copied there. This also means, that caller is responsible for freeing memory. + +.P +The \fIsize\fR parameter is length of \fIdata\fR. This one must be at least same +length as previously stored data otherwise error is returned. Parameter can +be larger but only stored data size bytes are changed. + +Use \fBsam_data_getsize(3)\fR to find out length of 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_INVALID_PARAM +data parameter is NULL or size is less then currently stored data length + +.SH "SEE ALSO" +.BR sam_data_getsize (3), +.BR sam_data_store (3) diff --git a/man/sam_data_store.3.in b/man/sam_data_store.3.in new file mode 100644 index 0000000..88ab7aa --- /dev/null +++ b/man/sam_data_store.3.in @@ -0,0 +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 <corosync/sam.h>\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 +.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_finalize.3.in b/man/sam_finalize.3.in new file mode 100644 index 0000000..c633a70 --- /dev/null +++ b/man/sam_finalize.3.in @@ -0,0 +1,63 @@ +.\"/* +.\" * 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_FINALIZE" 3 "12/01/2009" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_finalize \- Terminate SAM service + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_finalize (void);\fR + +.SH DESCRIPTION +.P +The \fBsam_finalize\fR function is used to terminate SAM API. Once the connection is finalized, +the SAM may not be used again by application. Whole functionality (health checking) will be +stopped and after application fail, recovery action will not be taken. + +.SH RETURN VALUE +.P +This call return CS_OK value if successful, otherwise and error is returned. + +.SH ERRORS +.TP +CS_ERR_BAD_HANDLE +library was not initialized by \fBsam_init(3)\fR function or was finished already. + +.SH "SEE ALSO" +.BR sam_initialize (3) diff --git a/man/sam_hc_callback_register.3.in b/man/sam_hc_callback_register.3.in new file mode 100644 index 0000000..c9f5619 --- /dev/null +++ b/man/sam_hc_callback_register.3.in @@ -0,0 +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 <corosync/sam.h>\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 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 +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 new file mode 100644 index 0000000..dfcf93c --- /dev/null +++ b/man/sam_hc_send.3.in @@ -0,0 +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 <corosync/sam.h>\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 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_initialize.3.in b/man/sam_initialize.3.in new file mode 100644 index 0000000..2e57904 --- /dev/null +++ b/man/sam_initialize.3.in @@ -0,0 +1,126 @@ +.\"/* +.\" * Copyright (c) 2009-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_INITIALIZE" 3 "21/05/2010" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_initialize \- Initialize health checking + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_initialize (int\fR \fItime_interval\fR\fB, sam_recovery_policy_t \fIrecovery_policy\fR);\fR + +.SH DESCRIPTION +.P +The \fBsam_initialize\fR function is used to initialize health checking of a process. + +.P +Application can have only one instance of SAM. This function must be called +before any other of SAM functions. It is recommended to initialize before the +process begins any process initialization. + +.P +The \fItime_interval\fR parameter is a timeout in milliseconds before taking +recovery action after having not received a healthcheck. + +If \fItime_interval\fR parameter is zero, there is no time limit and no +healthcheck must be sent by the process. In this operational mode, a process +failure will continue to execute the recovery policy. + +.P +The \fIrecovery_policy\fR is defined as type: + +.nf + typedef enum { + SAM_RECOVERY_POLICY_QUIT = 1, + SAM_RECOVERY_POLICY_RESTART = 2, + SAM_RECOVERY_POLICY_QUORUM = 0x08, + SAM_RECOVERY_POLICY_QUORUM_QUIT = SAM_RECOVERY_POLICY_QUORUM | SAM_RECOVERY_POLICY_QUIT, + SAM_RECOVERY_POLICY_QUORUM_RESTART = SAM_RECOVERY_POLICY_QUORUM | SAM_RECOVERY_POLICY_RESTART, + SAM_RECOVERY_POLICY_CMAP = 0x10, + SAM_RECOVERY_POLICY_CONFDB = 0x10, + } sam_recovery_policy_t; +.fi + +.P +where + +.TP +SAM_RECOVERY_POLICY_QUIT +on failure, the process will terminate. +.TP +SAM_RECOVERY_POLICY_RESTART +on failure, the process will restart. +.TP +SAM_RECOVERY_POLICY_QUORUM +is not policy. Used only as flag meaning quorum integration +.TP +SAM_RECOVERY_POLICY_QUORUM_QUIT +same as \fISAM_RECOVERY_POLICY_QUIT\fR but \fBsam_start (3)\fR will block until corosync becomes +quorate and process will be terminated if quorum is lost. +.TP +SAM_RECOVERY_POLICY_QUORUM_RESTART +same as \fISAM_RECOVERY_POLICY_RESTART\fR but \fBsam_start (3)\fR will block until corosync becomes +quorate and process will be restarted if quorum is lost. +.TP +SAM_RECOVERY_POLICY_CMAP +is not policy. Used only as flag meaning cmap integration. It can be used with all previous policies. +For backward compatibility, SAM_RECOVERY_POLICY_CONFDB with same meaning as +\fISAM_RECOVERY_POLICY_CMAP\fR is also provided. + +.P +To perform event driven healthchecking, \fBsam_register(3)\fR and +\fBsam_start(3)\fR functions must called. Event driven healthchecking causes +the duplicate standby process running the SAM serve rto periodically request +healthchecks from the active process. + +.SH RETURN VALUE +.P +This call return CS_OK value if successful, otherwise and error is returned. + +.SH ERRORS +.TP +CS_ERR_BAD_HANDLE +can happened in case of double initialization. +.TP +CS_ERR_INVALID_PARAM +\fIrecovery_policy\fR has invalid value. + +.SH "SEE ALSO" +.BR sam_register (3), +.BR sam_start (3), +.BR sam_hc_callback_register (3) diff --git a/man/sam_mark_failed.3.in b/man/sam_mark_failed.3.in new file mode 100644 index 0000000..acfb3ee --- /dev/null +++ b/man/sam_mark_failed.3.in @@ -0,0 +1,73 @@ +.\"/* +.\" * 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_STOP" 3 "21/05/2010" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_mark_failed \- Mark process failed + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_mark_failed (void);\fR + +.SH DESCRIPTION +.P +The \fBsam_mark_failed\fR function is used with SAM_RECOVERY_POLICY_CMAP mostly +together with SAM_RECOVERY_POLICY_RESTART to mark process failed. Process marked +failed is killed without sending warn signal and control process will exit +as with SAM_RECOVERY_POLICY_QUIT policy. Condb key state will be set to failed so +corosync watchdog can take required action. + +.SH RETURN VALUE +.P +This call return CS_OK value if successful, otherwise and error is returned. + +.SH ERRORS +.TP +CS_ERR_BAD_HANDLE +library was not initialized by calling \fBsam_initialize(3)\fR or was already finalized + +.TP +CS_ERR_INVALID_PARAM +recovery policy doesn't has SAM_RECOVERY_POLICY_CMAP flag set + +.TP +CS_ERR_LIBRARY +some internal error appeared (communication with parent process) + +.SH "SEE ALSO" +.BR sam_initialize (3) diff --git a/man/sam_overview.3 b/man/sam_overview.3 new file mode 100644 index 0000000..13b45ad --- /dev/null +++ b/man/sam_overview.3 @@ -0,0 +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" 3 "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 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/sam_register.3.in b/man/sam_register.3.in new file mode 100644 index 0000000..2af86d2 --- /dev/null +++ b/man/sam_register.3.in @@ -0,0 +1,88 @@ +.\"/* +.\" * 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_REGISTER" 3 "12/01/2009" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_rehister \- Register component for health checking + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_register (unsigned int *\fIinstance_id\fR);\fR + +.SH DESCRIPTION +.P +The \fBsam_register\fR function is used to register a process for healthchecking. +If recovery policy is set to \fISAM_RECOVERY_POLICY_RESTART\fR and recovery +action will be taken, the new process instance will begin execution at the next +code line after this function is called. + +.P +This function can be called only once and SAM must be initialized by +\fBsam_initialize(3)\fR function. + +.P +The \fIinstance_id\fR argument is a pointer to a value storing the current +iteration instance. If this parameter is NULL, no \fIinstance_id\fR is returned. +and then, no \fIinstance_id\fR will be returned. This value starts at 0 for the +first iteration instance, and increases by 1 each time a recovery restart is +executed. After reaching MAX_INT, the instance_id will reset to 0. + +.P +The placement of this function is important because after it is called, the +process id will change. + +.P +After registration, event driven health checking is not running. + +.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 was not started by calling \fBsam_start(3)\fR function. +.TP +CS_ERR_LIBRARY +internal library call failed. This can be one of pipe creation or fork. +It's possible to get more information from errno. + +.SH "SEE ALSO" +.BR sam_start (3), +.BR sam_initialize (3), +.BR sam_hc_callback_register (3) diff --git a/man/sam_start.3.in b/man/sam_start.3.in new file mode 100644 index 0000000..c49f230 --- /dev/null +++ b/man/sam_start.3.in @@ -0,0 +1,83 @@ +.\"/* +.\" * Copyright (c) 2009-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_START" 3 "30/04/2010" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_start \- Start health checking + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_start (void);\fR + +.SH DESCRIPTION +.P +The \fBsam_start\fR function is used to start health checking of application. +After calling this function, the active process needs to send healthchecks +within the registered time interval by calling \fBsam_hc_send(3)\fR. If +event driven healthchecking is configured by calling \fBsam_register(3)\fR, +an internal thread will be created and send health check confirmations four +times per \fItime_interval\fR. + +.P +Application must be registered by calling \fBsam_register(3)\fR before this +function can be called. + +.P +An application can always stop health checking by calling the \fBsam_stop(3)\fR +function. + +.P +If SAM is initialized with quorum policy \fISAM_RECOVERY_POLICY_QUIT\fR or +\fISAM_RECOVERY_POLICY_RESTART\fR \fBsam_start\fR will block until corosync +becomes quorate. + +.SH RETURN VALUE +.P +This call return CS_OK value if successful, otherwise and error is returned. If +SAM is initialized with quorum policy, returned error can also be quorum error. + +.SH ERRORS +.TP +CS_ERR_BAD_HANDLE +component was not registered by calling \fBsam_register(3)\fR function. + +.SH "SEE ALSO" +.BR sam_hc_send (3), +.BR sam_stop (3), +.BR sam_register (3), +.BR sam_hc_callback_register (3) diff --git a/man/sam_stop.3.in b/man/sam_stop.3.in new file mode 100644 index 0000000..708d079 --- /dev/null +++ b/man/sam_stop.3.in @@ -0,0 +1,67 @@ +.\"/* +.\" * 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_STOP" 3 "12/01/2009" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_stop \- Stop health checking + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_stop (void);\fR + +.SH DESCRIPTION +.P +The \fBsam_stop\fR function is used to stop health checking of an active +process. After calling this function, the application no longer should send +helathchecks. In the case of event driven healthchecking, the healthchecking +thread will be stopped. + +.P +A process can always start health checking again by calling \fBsam_start(3)\fR function. + +.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 was not started by calling \fBsam_start(3)\fR function. + +.SH "SEE ALSO" +.BR sam_start (3) diff --git a/man/sam_warn_signal_set.3.in b/man/sam_warn_signal_set.3.in new file mode 100644 index 0000000..ffc31eb --- /dev/null +++ b/man/sam_warn_signal_set.3.in @@ -0,0 +1,63 @@ +.\"/* +.\" * 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_WARN_SIGNAL_SET" 3 "03/11/2010" "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" + +.SH NAME +.P +sam_warn_signal_set \- Set warn signal + +.SH SYNOPSIS +.P +\fB#include <corosync/sam.h>\fR + +.P +\fBcs_error_t sam_warn_signal_set (int warn_signal);\fR + +.SH DESCRIPTION +.P +The \fBsam_warn_signal_set\fR function is used to configure warning signal +sent before real killing of unresponsive application. Default value is +SIGTERM. SIGKILL can be used to emulate "not warning signal send" behaviour. + +.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. + +.SH "SEE ALSO" +.BR sam_initialize (3) diff --git a/man/votequorum.5 b/man/votequorum.5 new file mode 100644 index 0000000..0cb03c2 --- /dev/null +++ b/man/votequorum.5 @@ -0,0 +1,410 @@ +.\"/* +.\" * Copyright (c) 2012-2014 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Authors: Christine Caulfield <ccaulfie@redhat.com> +.\" * Fabio M. Di Nitto <fdinitto@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 VOTEQUORUM 5 2018-12-14 "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 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|<list of node IDs> +.PP +\(oqlowest\(cq is the default, \(oqhighest\(cq 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 ev_tracking (stored in the directory configured in system.state_dir +or /var/lib/corosync/ when unset) 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 (3) +.PP diff --git a/man/votequorum_context_get.3.in b/man/votequorum_context_get.3.in new file mode 100644 index 0000000..6ac6bcc --- /dev/null +++ b/man/votequorum_context_get.3.in @@ -0,0 +1,64 @@ +.\"/* +.\" * Copyright (c) 2007,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 VOTEQUORUM_CONTEXT_GET 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_context_get \- Gets the context variable for a VOTEQUORUM instance +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_context_get(votequorum_handle_t " handle ", void **" context ");" +.SH DESCRIPTION +The +.B votequorum_context_get +function is used to retrieve the context variable previously stored using +.B votequorum_context_set(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 (3), +.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_context_set.3.in b/man/votequorum_context_set.3.in new file mode 100644 index 0000000..5053e88 --- /dev/null +++ b/man/votequorum_context_set.3.in @@ -0,0 +1,66 @@ +.\"/* +.\" * Copyright (c) 2007,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Patrick Caulfield <pcaulfie@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 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 <corosync/votequorum.h> +.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 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 (3), +.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 new file mode 100644 index 0000000..10f4030 --- /dev/null +++ b/man/votequorum_dispatch.3.in @@ -0,0 +1,99 @@ +.\"/* +.\" * Copyright (c) 2009,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 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 <corosync/votequorum.h> +.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 +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 (3), +.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_fd_get.3.in b/man/votequorum_fd_get.3.in new file mode 100644 index 0000000..352b25a --- /dev/null +++ b/man/votequorum_fd_get.3.in @@ -0,0 +1,70 @@ +.\"/* +.\" * Copyright (c) 2009,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_FD_GET 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_fd_get \- Dispatches callbacks from the votequorum service +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_fd_get(votequorum_handle_t " handle ", int *" fd ");" +.SH DESCRIPTION +The +.B votequorum_fd_get +function is used to retrieve the file descriptor that may be used with the poll +system call to determine when +.B votequorum_dispatch(3) +won't block. The +.I handle +argument may not be used directly with +.B poll +because it is not the file descriptor, but instead an internal identifier used +by the votequorum library. +.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 (3), +.BR votequorum_initialize (3), +.BR votequorum_finalize (3), +.BR votequorum_getinfo (3), +.BR votequorum_trackstart (3), +.BR votequorum_trackstop (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_finalize.3.in b/man/votequorum_finalize.3.in new file mode 100644 index 0000000..fccd729 --- /dev/null +++ b/man/votequorum_finalize.3.in @@ -0,0 +1,67 @@ +.\"/* +.\" * Copyright (c) 2009,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 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 <corosync/votequorum.h> +.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 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 (3), +.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_getinfo.3.in b/man/votequorum_getinfo.3.in new file mode 100644 index 0000000..8e15690 --- /dev/null +++ b/man/votequorum_getinfo.3.in @@ -0,0 +1,111 @@ +.\"/* +.\" * Copyright (c) 2009,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_GETINFO 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_getinfo \- Get information about the VoteQuorum service +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_getinfo(votequorum_handle_t *" handle ", unsigned int " nodeid ", struct votequorum_info *" info ");" +.SH DESCRIPTION +The +.B votequorum_getinfo +function is used to get information about the voting system and its nodes. + +The +.I nodeid +argument indicates which node information should be stored in the votequorum_info structure. + +The votequorum_info structure is defined as follows: + +.nf + +struct votequorum_info { + unsigned int node_id; + unsigned int node_state; + unsigned int node_votes; + unsigned int node_expected_votes; + unsigned int highest_expected; + unsigned int total_votes; + unsigned int quorum; + unsigned int flags; + unsigned int qdevice_votes; + char qdevice_name[VOTEQUORUM_QDEVICE_MAX_NAME_LEN]; +}; + +.fi +The node_state is defined as: +.nf + +#define VOTEQUORUM_NODESTATE_MEMBER 1 +#define VOTEQUORUM_NODESTATE_DEAD 2 +#define VOTEQUORUM_NODESTATE_LEAVING 3 + +.fi +The flags are defined as: +.nf + +#define VOTEQUORUM_INFO_TWONODE 1 +#define VOTEQUORUM_INFO_QUORATE 2 +#define VOTEQUORUM_INFO_WAIT_FOR_ALL 4 +#define VOTEQUORUM_INFO_LAST_MAN_STANDING 8 +#define VOTEQUORUM_INFO_AUTO_TIE_BREAKER 16 +#define VOTEQUORUM_INFO_ALLOW_DOWNSCALE 32 +#define VOTEQUORUM_INFO_QDEVICE_REGISTERED 64 +#define VOTEQUORUM_INFO_QDEVICE_ALIVE 128 +#define VOTEQUORUM_INFO_QDEVICE_CAST_VOTE 256 +#define VOTEQUORUM_INFO_QDEVICE_MASTER_WINS 512 + +.fi +.PP +The members starting node_ hold information specific to the requested nodeid, the other are +general to the voting system. +.SH RETURN VALUE +This call returns the CS_OK value if successful, otherwise a generic error is returned. +.PP +.SH ERRORS +@COMMONIPCERRORS@ +.SH "SEE ALSO" +.BR votequorum_overview (3), +.BR votequorum_initialize (3), +.BR votequorum_finalize (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 new file mode 100644 index 0000000..be7f3f1 --- /dev/null +++ b/man/votequorum_initialize.3.in @@ -0,0 +1,139 @@ +.\"/* +.\" * Copyright (c) 2009,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 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 <corosync/votequorum.h> +.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 +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 (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_overview.3 b/man/votequorum_overview.3 new file mode 100644 index 0000000..4ec1b75 --- /dev/null +++ b/man/votequorum_overview.3 @@ -0,0 +1,84 @@ +.\"/* +.\" * Copyright (c) 2008, 2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Authors: Christine Caulfield <ccaulfie@redhat.com> +.\" * Fabio M. Di Nitto <fdinitto@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 VOTEQUORUM_OVERVIEW 3 2012-01-12 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_overview \- Votequorum Library Overview +.SH OVERVIEW +The votequorum library is delivered with the corosync project. It is the external interface to +the vote-based quorum service. This service is optionally loaded into all nodes in 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. +.PP +The library provides a mechanism to: +.PP +* Query the quorum status +.PP +* Get a list of nodes known to the quorum service +.PP +* Receive notifications of quorum state changes +.PP +* Change the number of votes assigned to a node +.PP +* Change the number of expected votes for a cluster to be quorate +.PP +* Connect an additional quorum device to allow small clusters to remain quorate during node outages. +.PP +.SH VIRTUAL SYNCHRONY +Votequorum is the only one service where communication with library is allowed during synchronization +phase. This makes it possible for quorum device to react to membership change and decide to vote or +not without timing hazard, because corosync stands in synchronization phase until qdevice on all +nodes votes or timeout expires. + +As a side effect, extended virtual synchrony is broken for the votequorum service. This means, that +messages sent during synchronization phase can be delivered sooner then messages sent right +before sync phase began. This applies also for local messages. +.SH BUGS +No known bugs at the time of writing. The authors are from outerspace. Deal with it. +.SH "SEE ALSO" +.BR corosync-quorumtool (8), +.BR votequorum (5), +.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_qdevice_master_wins.3.in b/man/votequorum_qdevice_master_wins.3.in new file mode 100644 index 0000000..4be1aa0 --- /dev/null +++ b/man/votequorum_qdevice_master_wins.3.in @@ -0,0 +1,77 @@ +.\"/* +.\" * Copyright (c) 2014 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_QDEVICE_MASTER_WINS 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_qdevice_master_wins \- Sets or clears quorum device master_wins flag +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_qdevice_master_wins(votequorum_handle_t " handle " const char " name ", unsigned int " allow ");" +.SH DESCRIPTION +The +.B votequorum_qdevice_master_wins +informs votequorum whether or not the currently registered qdevice subsystem supports 'master_wins' mode (default 0). +This mode allows the qdevice to effectively take over the quorum calculations of votequorum. Any node with an active +qdevice that also has master_wins set becomes quorate regardless of the node votes of the cluster. It is left up to the +qdevice subsystem itself (not part of votequorum) to communicate across the nodes or otherwise provide some system of +deciding which nodes will be part of the quorate cluster, if any. eg They may be the set of nodes that has access to +a quorum disk. +.br +.B name +The name of the currently registered quorum device on this node. This must match the existing name known to votequorum. +.br +.B allow +0 (the default) means that master_wins is not active on this node. 1 means that master_wins is active on this node. +.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 (3), +.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), +.BR votequorum_qdevice_register (3), +.BR votequorum_qdevice_poll (3), +.BR votequorum_qdevice_update (3), +.PP diff --git a/man/votequorum_qdevice_poll.3.in b/man/votequorum_qdevice_poll.3.in new file mode 100644 index 0000000..c39969e --- /dev/null +++ b/man/votequorum_qdevice_poll.3.in @@ -0,0 +1,83 @@ +.\"/* +.\" * Copyright (c) 2009,2012,2014 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_QDEVICE_POLL 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_qdevice_poll \- Tells votequorum the result of the quorum device poll +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_qdevice_poll(votequorum_handle_t " handle ", const char * " name ", unsigned int " cast_vote ", votequorum_ring_id_t " ring_id ");" +.SH DESCRIPTION +The +.B votequorum_qdevice_poll +is called by the quorum device subsystem (not provided as part of votequorum) to tell +the voting system if the quorum device is present/active or not. If +.B cast_vote +is 1 then the votes for the device are included in the quorum calculation, otherwise not. +Current +.B ring_id +must be set (one get in votequorum_notification_fn callback) otherwise poll is ignored. +This routine should be called at regular intervals to ensure that the device status +is always known to votequorum. If +.B votequorum_qdevice_poll +is not called for (default) 10 seconds (or 30 seconds for sync phase) then the device will be deemed to be dead and +its votes removed from the cluster. This does not unregister the device. +The default poll time can be changed by setting the cmap variable +.B quorum.device.timeout +for normal operation or +.B quorum.device.sync_timeout +for synchronization phase. +.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 (3), +.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), +.BR votequorum_qdevice_register (3), +.BR votequorum_qdevice_unregister (3), +.BR votequorum_qdevice_update (3), +.BR votequorum_qdevice_master_wins (3), +.PP diff --git a/man/votequorum_qdevice_register.3.in b/man/votequorum_qdevice_register.3.in new file mode 100644 index 0000000..48393d9 --- /dev/null +++ b/man/votequorum_qdevice_register.3.in @@ -0,0 +1,83 @@ +.\"/* +.\" * Copyright (c) 2009,2012,2014 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_QDEVICE_REGISTER 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_qdevice_register \- Registers a new quorum device +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_qdevice_register(votequorum_handle_t " handle ", const char * " name ");" +.SH DESCRIPTION +The +.B votequorum_qdevice_register +is used to register a new quorum device. A quorum device is an external way of adding votes to a small +cluster. The quorum device is, in effect, a pseudo node in the cluster that provide votes based on some +external device, usually a shared disk partition or perhaps a network router. +.br +This call creates the device but does not mark it active. +.B votequorum_qdevice_poll +must be called for the votes to be included in the quorum calculation. +.br +.B name +is string containing an informative name for the quorum device. It is simply stored +by votequorum and used in the display of corosync-quorumtool, it can be a maximum of 254 characters. +.br +The number of votes contributed by the quorum device is already known to votequorum, it is set in cmap +quorum.device.votes and not by the device. +.br +Note that it is the responsibility of the quorum device subsystem (not provided as part of votequorum) +to keep all nodes informed of the quorum device status. +.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 (3), +.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), +.BR votequorum_qdevice_unregister (3), +.BR votequorum_qdevice_poll (3), +.BR votequorum_qdevice_update (3), +.BR votequorum_qdevice_master_wins (3) +.PP diff --git a/man/votequorum_qdevice_unregister.3.in b/man/votequorum_qdevice_unregister.3.in new file mode 100644 index 0000000..311466e --- /dev/null +++ b/man/votequorum_qdevice_unregister.3.in @@ -0,0 +1,68 @@ +.\"/* +.\" * Copyright (c) 2009,2012,2014 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_QDEVICE_UNREGISTER 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_qdevice_unregister \- Unregisters a new quorum device +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_qdevice_unregister(votequorum_handle_t " handle ", const char * " name ");" +.SH DESCRIPTION +The +.B votequorum_qdevice_unregister +unregisters a quorum device. Any votes it had will be removed from the cluster. NOTE that this could +make the cluster inquorate. +.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 (3), +.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), +.BR votequorum_qdevice_register (3), +.BR votequorum_qdevice_poll (3), +.BR votequorum_qdevice_update (3), +.BR votequorum_qdevice_master_wins (3) +.PP diff --git a/man/votequorum_qdevice_update.3.in b/man/votequorum_qdevice_update.3.in new file mode 100644 index 0000000..a75357e --- /dev/null +++ b/man/votequorum_qdevice_update.3.in @@ -0,0 +1,69 @@ +.\"/* +.\" * Copyright (c) 2014 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_QDEVICE_UPDATE 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_qdevice_update \- Updates quorum device name +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_qdevice_update(votequorum_handle_t " handle "const char " oldname ", const char " newname ");" +.SH DESCRIPTION +The +.B votequorum_qdevice_update +is used to change the name of the quorum device to corosync. The name of q quorum device is purely informational +and has no significance to votequorum itself, but it's useful for the name (displayed by corosync-quorumtool) +to reflect the actual device contributing votes to quorum to avoid user confusion. +.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 (3), +.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), +.BR votequorum_qdevice_register (3), +.BR votequorum_qdevice_poll (3), +.BR votequorum_qdevice_master_wins (3), +.BR corosync-quorumtool (8) +.PP diff --git a/man/votequorum_setexpected.3.in b/man/votequorum_setexpected.3.in new file mode 100644 index 0000000..0cc4069 --- /dev/null +++ b/man/votequorum_setexpected.3.in @@ -0,0 +1,66 @@ +.\"/* +.\" * Copyright (c) 2009,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_SETEXPECTED 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_setexpected \- Sets the expected votes for the cluster +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_setexpected(votequorum_handle_t " handle ", int " expected_votes ");" +.SH DESCRIPTION +The +.B votequorum_setexpected +function is used to change the expected votes in the cluster. Expected votes is used to calculate +quorum and should normally be the total number of votes that will exist when all the expected nodes +are joined. Quorum will usually be half of this (rounded up). +.BR +It is not possible to set expected votes up so that it makes the cluster inquorate using this command. +.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 (3), +.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_setvotes (3) +.PP diff --git a/man/votequorum_setvotes.3.in b/man/votequorum_setvotes.3.in new file mode 100644 index 0000000..cc7b434 --- /dev/null +++ b/man/votequorum_setvotes.3.in @@ -0,0 +1,63 @@ +.\"/* +.\" * Copyright (c) 2009,2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Christine Caulfield <ccaulfie@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 VOTEQUORUM_VOTES 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_setvotes \- Sets the number of votes for a node +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_setexpected(votequorum_handle_t " handle ", unsigned int " nodeid ", int " votes ");" +.SH DESCRIPTION +The +.B votequorum_setvotes +is used to change the number of votes that a node has. Note that it is not possible, using this function, +to change the number of node votes such that the cluster goes inquorate. +.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 (3), +.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) +.PP diff --git a/man/votequorum_trackstart.3.in b/man/votequorum_trackstart.3.in new file mode 100644 index 0000000..7a14b06 --- /dev/null +++ b/man/votequorum_trackstart.3.in @@ -0,0 +1,83 @@ +.\"/* +.\" * Copyright (c) 2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 VOTEQUORUM_TRACKSTART 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_trackstart \- Enable callbacks notification. +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_trackstart(votequorum_handle_t *" handle ", uint64_t " context ", unsigned int " flags ");" +.SH DESCRIPTION +The +.B votequorum_trackstart +function is used to enable callbacks notification from the votequorum API. +.PP +Every time the voting configuration changes (eg a node joins or leave the cluster) +or the quorum status change or the expected votes changes, the notification is queued. +.PP +The notification is dispatched via +.B votequorum_dispatch() +function that will execute the callback. +.PP +The +.I context +option allows one to set a tracking context. +.PP +The +.I flags +argument is defined by one or more of the following values and values can be bitwise-or'd + +.nf +#define CS_TRACK_CURRENT 0x01 +#define CS_TRACK_CHANGES 0x02 +#define CS_TRACK_CHANGES_ONLY 0x04 +.fi +.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 (3), +.BR votequorum_initialize (3), +.BR votequorum_finalize (3), +.BR votequorum_getinfo (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_trackstop.3.in b/man/votequorum_trackstop.3.in new file mode 100644 index 0000000..ee4387e --- /dev/null +++ b/man/votequorum_trackstop.3.in @@ -0,0 +1,63 @@ +.\"/* +.\" * Copyright (c) 2012 Red Hat, Inc. +.\" * +.\" * All rights reserved. +.\" * +.\" * Author: Fabio M. Di Nitto <fdinitto@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 VOTEQUORUM_TRACKSTOP 3 @BUILDDATE@ "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" +.SH NAME +votequorum_trackstop \- Disable callbacks notification. +.SH SYNOPSIS +.B #include <corosync/votequorum.h> +.sp +.BI "int votequorum_trackstart(votequorum_handle_t *" handle ");" +.SH DESCRIPTION +The +.B votequorum_trackstop +function is used to disable callbacks notification from the votequorum API. +.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 (3), +.BR votequorum_initialize (3), +.BR votequorum_finalize (3), +.BR votequorum_getinfo (3), +.BR votequorum_trackstart (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 |