X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=config%2Ffunctions;h=8dac161940da20d5550b76193da8d608cbd95873;hb=484bf2966f415a37dc6ab35288e8a27839274681;hp=a20cadf0ce82035499a60cf8878326608794713a;hpb=dca4c4ebf3c35f8db3ae208efb7a83abbf726ed6;p=sahlberg%2Fctdb.git diff --git a/config/functions b/config/functions index a20cadf0..8dac1619 100755 --- a/config/functions +++ b/config/functions @@ -4,7 +4,7 @@ PATH=/bin:/usr/bin:/usr/sbin:/sbin:$PATH ####################################### # pull in a system config file, if any -loadconfig() { +_loadconfig() { if [ -z "$1" ] ; then foo="${service_config:-${service_name}}" @@ -25,6 +25,10 @@ loadconfig() { fi } +loadconfig () { + _loadconfig "$@" +} + ############################################################## # determine on what type of system (init style) we are running detect_init_style() { @@ -144,10 +148,14 @@ ctdb_check_rpc() { progname="$1" prognum="$2" version="$3" - rpcinfo -u localhost $prognum $version > /dev/null || { - echo "ERROR: $progname not responding to rpc requests" - exit 1 - } + + ctdb_check_rpc_out=$(rpcinfo -u localhost $prognum $version 2>&1) + if [ $? -ne 0 ] ; then + ctdb_check_rpc_out="ERROR: $progname failed RPC check: +$ctdb_check_rpc_out" + echo "$ctdb_check_rpc_out" + return 1 + fi } ###################################################### @@ -231,7 +239,7 @@ kill_tcp_connections() { _failed=0 _killcount=0 - connfile="$CTDB_BASE/state/connections.$_IP" + connfile="$CTDB_VARDIR/state/connections.$_IP" netstat -tn |egrep "^tcp.*[[:space:]]+$_IP:.*ESTABLISHED" | awk '{print $4" "$5}' > $connfile netstat -tn |egrep "^tcp.*[[:space:]]+::ffff:$_IP:.*ESTABLISHED" | awk '{print $4" "$5}' >> $connfile @@ -281,7 +289,7 @@ kill_tcp_connections_local_only() { _failed=0 _killcount=0 - connfile="$CTDB_BASE/state/connections.$_IP" + connfile="$CTDB_VARDIR/state/connections.$_IP" netstat -tn |egrep "^tcp.*[[:space:]]+$_IP:.*ESTABLISHED" | awk '{print $4" "$5}' > $connfile netstat -tn |egrep "^tcp.*[[:space:]]+::ffff:$_IP:.*ESTABLISHED" | awk '{print $4" "$5}' >> $connfile @@ -323,7 +331,7 @@ tickle_tcp_connections() { _failed=0 _killcount=0 - connfile="$CTDB_BASE/state/connections.$_IP" + connfile="$CTDB_VARDIR/state/connections.$_IP" netstat -tn |egrep "^tcp.*[[:space:]]+$_IP:.*ESTABLISHED" | awk '{print $4" "$5}' > $connfile netstat -tn |egrep "^tcp.*[[:space:]]+::ffff:$_IP:.*ESTABLISHED" | awk '{print $4" "$5}' >> $connfile @@ -367,7 +375,10 @@ startstop_nfs() { service nfsserver stop > /dev/null 2>&1 ;; restart) - service nfsserver restart + echo 0 >/proc/fs/nfsd/threads + service nfsserver stop > /dev/null 2>&1 + pkill -9 nfsd + service nfsserver start ;; esac ;; @@ -382,8 +393,12 @@ startstop_nfs() { service nfslock stop > /dev/null 2>&1 ;; restart) - service nfslock restart - service nfs restart + echo 0 >/proc/fs/nfsd/threads + service nfs stop > /dev/null 2>&1 + service nfslock stop > /dev/null 2>&1 + pkill -9 nfsd + service nfslock start + service nfs start ;; esac ;; @@ -417,6 +432,10 @@ startstop_nfslock() { stop) service nfsserver stop > /dev/null 2>&1 ;; + restart) + service nfsserver stop + service nfsserver start + ;; esac ;; rhel) @@ -427,6 +446,10 @@ startstop_nfslock() { stop) service nfslock stop > /dev/null 2>&1 ;; + restart) + service nfslock stop + service nfslock start + ;; esac ;; *) @@ -453,7 +476,7 @@ add_ip_to_iface() local _iface=$1 local _ip=$2 local _maskbits=$3 - local _state_dir="$CTDB_BASE/state/interface_modify" + local _state_dir="$CTDB_VARDIR/state/interface_modify" local _lockfile="$_state_dir/$_iface.flock" local _readd_base="$_state_dir/$_iface.readd.d" @@ -476,7 +499,7 @@ delete_ip_from_iface() local _iface=$1 local _ip=$2 local _maskbits=$3 - local _state_dir="$CTDB_BASE/state/interface_modify" + local _state_dir="$CTDB_VARDIR/state/interface_modify" local _lockfile="$_state_dir/$_iface.flock" local _readd_base="$_state_dir/$_iface.readd.d" @@ -500,7 +523,7 @@ setup_iface_ip_readd_script() local _ip=$2 local _maskbits=$3 local _readd_script=$4 - local _state_dir="$CTDB_BASE/state/interface_modify" + local _state_dir="$CTDB_VARDIR/state/interface_modify" local _lockfile="$_state_dir/$_iface.flock" local _readd_base="$_state_dir/$_iface.readd.d" @@ -555,6 +578,19 @@ ctdb_check_counter_limit () { echo "WARNING: less than $_limit consecutive failures ($_size) for $service_name, not unhealthy yet" fi } +ctdb_check_counter_equal () { + _ctdb_counter_common + + _limit=$1 + + # unary counting! + _size=$(stat -c "%s" "$_counter_file" 2>/dev/null || echo 0) + if [ $_size -eq $_limit ] ; then + return 1 + fi + return 0 +} + ######################################################## ctdb_spool_dir="/var/spool/ctdb" @@ -615,6 +651,7 @@ ctdb_service_unset_reconfigure () ctdb_service_reconfigure () { + echo "Reconfiguring service \"$service_name\"..." if [ -n "$service_reconfigure" ] ; then eval $service_reconfigure else @@ -633,49 +670,53 @@ ctdb_compat_managed_service () is_ctdb_managed_service () { + _service_name="${1:-${service_name}}" + t=" $CTDB_MANAGED_SERVICES " ctdb_compat_managed_service "$CTDB_MANAGES_VSFTPD" "vsftpd" ctdb_compat_managed_service "$CTDB_MANAGES_SAMBA" "samba" ctdb_compat_managed_service "$CTDB_MANAGES_SCP" "scp" - ctdb_compat_managed_service "$CTDB_MANAGES_WINDBIND" "windbind" + ctdb_compat_managed_service "$CTDB_MANAGES_WINBIND" "winbind" ctdb_compat_managed_service "$CTDB_MANAGES_HTTPD" "httpd" ctdb_compat_managed_service "$CTDB_MANAGES_ISCSI" "iscsi" ctdb_compat_managed_service "$CTDB_MANAGES_CLAMD" "clamd" ctdb_compat_managed_service "$CTDB_MANAGES_NFS" "nfs" + ctdb_compat_managed_service "$CTDB_MANAGES_NFS" "nfs-ganesha-gpfs" - # Returns 0 if "$service_name" appears in $t - [ "${t#* ${service_name} }" != "${t}" ] + # Returns 0 if "$_service_name" appears in $t + [ "${t#* ${_service_name} }" != "${t}" ] } ctdb_start_stop_service () { - _active="$ctdb_active_dir/$service_name" + _service_name="${1:-${service_name}}" - if is_ctdb_managed_service ; then + _active="$ctdb_active_dir/$_service_name" + if is_ctdb_managed_service "$_service_name"; then if ! [ -e "$_active" ] ; then - echo "Starting service $service_name" + echo "Starting service $_service_name" ctdb_service_start || exit $? mkdir -p "$ctdb_active_dir" touch "$_active" exit 0 fi - elif ! is_ctdb_managed_service ; then + else if [ -e "$_active" ] ; then - echo "Stopping service $service_name" + echo "Stopping service $_service_name" ctdb_service_stop || exit $? rm -f "$_active" + exit 0 fi - exit 0 fi } ctdb_service_start () { if [ -n "$service_start" ] ; then - eval $service_start + eval $service_start || return $? else - service "$service_name" start + service "$service_name" start || return $? fi ctdb_counter_init } @@ -779,7 +820,7 @@ iptables() ######################################################## # Temporary directory for tickles. -tickledir="$CTDB_BASE/state/tickles" +tickledir="$CTDB_VARDIR/state/tickles" mkdir -p "$tickledir" update_tickles ()