The branch, master has been updated
via 7c5ce115f2c ctdb-failover: Add sm-notify to statd_callout
via e4914e6a4f1 ctdb-scripts: Only send notifies for newly taken IPs
via 85afee0a83d ctdb-tests: Update statd-callout unit test
infrastructure
from 31c2bc58565 vfs_ceph_new: Reduce a level of indirection for
SMB_VFS_FSTATVFS
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 7c5ce115f2c11e5a2dd326238f08bc5e7c10641c
Author: Peter Schwenke <[email protected]>
Date: Thu Oct 9 12:48:28 2025 +1100
ctdb-failover: Add sm-notify to statd_callout
sm-notify is required when an NFS client reboots.
rpc-statd on the client will send an sm-notify to
rpc-statd on the NFS sever.
Add a test case.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15938
Signed-off-by: Peter Schwenke <[email protected]>
Reviewed-by: Martin Schwenke <[email protected]>
Reviewed-by: Anoop C S <[email protected]>
Autobuild-User(master): Martin Schwenke <[email protected]>
Autobuild-Date(master): Wed Feb 18 12:29:16 UTC 2026 on atb-devel-224
commit e4914e6a4f1cb77eebf86c5ab3f241c2a9e5bd05
Author: Peter Schwenke <[email protected]>
Date: Tue Apr 29 16:33:45 2025 +1000
ctdb-scripts: Only send notifies for newly taken IPs
We no longer delete shared state (and send notifies) for
IPs previously held by the current node. The NFS lock manager
won't have released locks for these IPs, so won't generate
SM_MON on reclaim attempts. Therefore, there will be
no add-client to put them back.
We now record newly taken IP addresses in takeip,
and only send notifies for those during
ipreallocated. The extra notifies were also confusing
statd.
Update existing tests to always simulate taking all of a node's IPs.
This causes no output changes.
Test updates confirm the subtleties of the statd_callout_helper
behaviour change. These pretend to only take a single IP, so
SM_NOTIFY must not be sent for other IPs. Shared state should
remain for these other files.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15939
Signed-off-by: Peter Schwenke <[email protected]>
Signed-off-by: Martin Schwenke <[email protected]>
Reviewed-by: Anoop C S <[email protected]>
commit 85afee0a83dd2f70b90cff4c1e21b865640261fb
Author: Martin Schwenke <[email protected]>
Date: Thu May 15 15:20:25 2025 +1000
ctdb-tests: Update statd-callout unit test infrastructure
Don't cheat. Keep some state about what is happening, similar to what
statd_callout and statd_callout_helper are expected to keep. This
means hinting arguments to check_shared_storage_statd_state() and
check_statd_callout_smnotify() can be dropped.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15939
Signed-off-by: Martin Schwenke <[email protected]>
Reviewed-by: Anoop C S <[email protected]>
-----------------------------------------------------------------------
Summary of changes:
ctdb/config/events/legacy/60.nfs.script | 3 +
ctdb/failover/statd_callout.c | 21 +++++-
.../UNIT/eventscripts/scripts/statd-callout.sh | 84 +++++++++++++++-------
ctdb/tests/UNIT/eventscripts/statd-callout.001.sh | 2 +-
ctdb/tests/UNIT/eventscripts/statd-callout.002.sh | 2 +-
ctdb/tests/UNIT/eventscripts/statd-callout.004.sh | 8 ++-
ctdb/tests/UNIT/eventscripts/statd-callout.005.sh | 12 +++-
ctdb/tests/UNIT/eventscripts/statd-callout.006.sh | 12 +++-
.../{statd-callout.006.sh => statd-callout.008.sh} | 14 +++-
ctdb/tests/UNIT/eventscripts/statd-callout.050.sh | 11 +++
.../{statd-callout.101.sh => statd-callout.108.sh} | 2 +-
.../{statd-callout.101.sh => statd-callout.150.sh} | 2 +-
.../{statd-callout.201.sh => statd-callout.208.sh} | 2 +-
.../{statd-callout.101.sh => statd-callout.250.sh} | 2 +-
ctdb/tools/statd_callout_helper | 44 ++++++++++--
15 files changed, 175 insertions(+), 46 deletions(-)
copy ctdb/tests/UNIT/eventscripts/{statd-callout.006.sh =>
statd-callout.008.sh} (60%)
create mode 100755 ctdb/tests/UNIT/eventscripts/statd-callout.050.sh
copy ctdb/tests/UNIT/eventscripts/{statd-callout.101.sh =>
statd-callout.108.sh} (70%)
copy ctdb/tests/UNIT/eventscripts/{statd-callout.101.sh =>
statd-callout.150.sh} (70%)
copy ctdb/tests/UNIT/eventscripts/{statd-callout.201.sh =>
statd-callout.208.sh} (69%)
copy ctdb/tests/UNIT/eventscripts/{statd-callout.101.sh =>
statd-callout.250.sh} (70%)
Changeset truncated at 500 lines:
diff --git a/ctdb/config/events/legacy/60.nfs.script
b/ctdb/config/events/legacy/60.nfs.script
index c59a0c18ea8..0146a39170c 100755
--- a/ctdb/config/events/legacy/60.nfs.script
+++ b/ctdb/config/events/legacy/60.nfs.script
@@ -325,6 +325,9 @@ shutdown)
takeip)
nfs_callout "$@" || exit $?
+ if [ -x "${CTDB_HELPER_BINDIR}/statd_callout_helper" ] ; then
+ "${CTDB_HELPER_BINDIR}/statd_callout_helper" takeip "$3"
+ fi
ctdb_service_set_reconfigure
;;
diff --git a/ctdb/failover/statd_callout.c b/ctdb/failover/statd_callout.c
index 8064432b21f..4111d675100 100644
--- a/ctdb/failover/statd_callout.c
+++ b/ctdb/failover/statd_callout.c
@@ -353,10 +353,27 @@ static void del_client_shared_dir(const char *cip)
static void usage(void)
{
- printf("usage: %s: { add-client | del-client } <client-ip>\n",
progname);
+ printf("usage: %s { add-client | del-client } <client-ip>\n", progname);
+ printf(" %s sm-notify mon_name ip_addr state\n", progname);
exit(1);
}
+/**
+ * @brief To be used as the statd ha-callout program
+ *
+ * Examples
+ * progname add-client 192.168.10.94 nsds2
+ * progname del-client 192.168.10.94 nsds2
+ * progname sm-notify sitar1 192.168.10.94 127
+ *
+ * @param[in] event One of add-client, del-client, sm-notify
+ * @param[in] mon_name The client being monitored. For add-client, del-client
+ * this will be the IP address. For sm-notify it will
+ * be the hostname
+ * @param[in] other We don't actually use this. For add-client and
+ * del-client it will be NFS server hostname.
+ * For sm-notify, it will be the client's state number.
+ */
int main(int argc, const char *argv[])
{
const char *event = NULL;
@@ -394,6 +411,8 @@ int main(int argc, const char *argv[])
case CTDB_SC_MODE_NONE:
break;
}
+ } else if (strcmp(event, "sm-notify") == 0) {
+ exit(0);
} else {
usage();
}
diff --git a/ctdb/tests/UNIT/eventscripts/scripts/statd-callout.sh
b/ctdb/tests/UNIT/eventscripts/scripts/statd-callout.sh
index 10912c5d3e5..f34248b2f6c 100644
--- a/ctdb/tests/UNIT/eventscripts/scripts/statd-callout.sh
+++ b/ctdb/tests/UNIT/eventscripts/scripts/statd-callout.sh
@@ -23,13 +23,18 @@ setup()
if [ "$statd_callout_location" = "$CTDB_STATD_CALLOUT_SHARED_STORAGE"
]; then
statd_callout_location=""
fi
+
+ state_dir="${CTDB_TEST_TMP_DIR}/statd-callout-state"
+ mkdir -p "$state_dir"
}
-ctdb_catdb_format_pairs()
+ctdb_catdb_format()
{
_count=0
- while read -r _k _v; do
+ while read -r _sip_cip; do
+ _k="statd-state@${_sip_cip}"
+ _v="DATETIME"
_kn=$(printf '%s' "$_k" | wc -c)
_vn=$(printf '%s' "$_v" | wc -c)
cat <<EOF
@@ -50,17 +55,19 @@ result_filter()
sed -e 's|^\(data(10) = \)".........."$|data(8) = "DATETIME"|'
}
-check_ctdb_tdb_statd_state()
+ctdb_shared_state_list()
{
- ctdb_get_my_public_addresses |
- while read -r _ _sip _; do
- for _cip; do
- cat <<EOF
-statd-state@${_sip}@${_cip} DATETIME
-EOF
- done
+ find "$state_dir" -name "mon@*" |
+ while read -r _f; do
+ echo "${_f#*/mon@}"
done |
- ctdb_catdb_format_pairs | {
+ sort
+}
+
+check_ctdb_tdb_statd_state()
+{
+ ctdb_shared_state_list |
+ ctdb_catdb_format | {
ok
simple_test_command ctdb catdb "$statd_callout_location"
} || exit $?
@@ -68,13 +75,8 @@ EOF
check_shared_dir_statd_state()
{
- ctdb_get_my_public_addresses |
- while read -r _ _sip _; do
- for _cip; do
- echo "statd-state@${_sip}@${_cip}"
- done
- done |
- sort | {
+ ctdb_shared_state_list |
+ sed -e 's|^|statd-state@|' | {
ok
_dir="${CTDB_TEST_TMP_DIR}${statd_callout_location}"
mkdir -p "$_dir"
@@ -130,14 +132,20 @@ check_statd_callout_smnotify()
nfs_load_config
- ctdb_get_my_public_addresses |
- while read -r _ _sip _; do
- for _cip; do
- cat <<EOF
+ find "$state_dir" -name "takeip@${FAKE_CTDB_PNN}@*" |
+ while read -r _f; do
+ _sip="${_f##*@}"
+ _prefix="mon@${_sip}@"
+ find "$state_dir" -name "${_prefix}*" |
+ while read -r _f; do
+ _cip="${_f##*@}"
+ cat <<EOF
SM_NOTIFY: ${_sip} -> ${_cip}, MON_NAME=${FAKE_NFS_HOSTNAME}, STATE=${_state}
EOF
- done
- done | {
+ rm -f "$_f"
+ done
+ done |
+ sort | {
ok
simple_test_event "notify"
} || exit $?
@@ -180,9 +188,35 @@ EOF
export CTDB_STATD_CALLOUT_CONFIG_FILE
case "$event" in
- add-client | del-client)
+ add-client)
cmd="${CTDB_SCRIPTS_HELPER_BINDIR}/statd_callout"
unit_test "$cmd" "$event" "$@"
+ ctdb_get_my_public_addresses |
+ while read -r _ _sip _; do
+ touch "${state_dir}/mon@${_sip}@${1}"
+ done
+ ;;
+ del-client)
+ cmd="${CTDB_SCRIPTS_HELPER_BINDIR}/statd_callout"
+ unit_test "$cmd" "$event" "$@"
+ ctdb_get_my_public_addresses |
+ while read -r _ _sip _; do
+ rm -f "${state_dir}/mon@${_sip}@${1}"
+ done
+ ;;
+ sm-notify)
+ cmd="${CTDB_SCRIPTS_HELPER_BINDIR}/statd_callout"
+ unit_test "$cmd" "$event" "$@"
+ ;;
+ takeip)
+ cmd="${CTDB_SCRIPTS_TOOLS_HELPER_DIR}/statd_callout_helper"
+ script_test "$cmd" "$event" "$@"
+ touch "${state_dir}/takeip@${FAKE_CTDB_PNN}@${1}"
+ ;;
+ notify)
+ cmd="${CTDB_SCRIPTS_TOOLS_HELPER_DIR}/statd_callout_helper"
+ script_test "$cmd" "$event" "$@"
+ rm -f "${state_dir}/takeip@${FAKE_CTDB_PNN}@"*
;;
*)
cmd="${CTDB_SCRIPTS_TOOLS_HELPER_DIR}/statd_callout_helper"
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.001.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.001.sh
index 475750041c5..69de3c93b85 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.001.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.001.sh
@@ -16,4 +16,4 @@ simple_test_event "startup"
simple_test_event "add-client" "192.168.123.45"
simple_test_event "update"
-check_shared_storage_statd_state "192.168.123.45"
+check_shared_storage_statd_state
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.002.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.002.sh
index 7e5d7b23621..7d94d9ca881 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.002.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.002.sh
@@ -17,4 +17,4 @@ simple_test_event "add-client" "192.168.123.45"
simple_test_event "add-client" "192.168.123.46"
simple_test_event "update"
-check_shared_storage_statd_state "192.168.123.45" "192.168.123.46"
+check_shared_storage_statd_state
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.004.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.004.sh
index 1b1bc05490a..2ea80129446 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.004.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.004.sh
@@ -13,11 +13,15 @@ setup "$mode"
ok_null
simple_test_event "startup"
+ctdb_get_my_public_addresses |
+ while read -r _ sip _; do
+ simple_test_event "takeip" "$sip"
+ done
simple_test_event "add-client" "192.168.123.45"
simple_test_event "update"
-check_shared_storage_statd_state "192.168.123.45"
+check_shared_storage_statd_state
-check_statd_callout_smnotify "192.168.123.45"
+check_statd_callout_smnotify
check_shared_storage_statd_state
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.005.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.005.sh
index 5a9274b1402..b3dcfcad360 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.005.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.005.sh
@@ -13,6 +13,10 @@ setup "$mode"
ok_null
simple_test_event "startup"
+ctdb_get_my_public_addresses |
+ while read -r _ sip _; do
+ simple_test_event "takeip" "$sip"
+ done
simple_test_event "add-client" "192.168.123.45"
simple_test_event "update"
@@ -20,13 +24,17 @@ ctdb_set_pnn 1
ok_null
simple_test_event "startup"
+ctdb_get_my_public_addresses |
+ while read -r _ sip _; do
+ simple_test_event "takeip" "$sip"
+ done
simple_test_event "add-client" "192.168.123.46"
simple_test_event "update"
ctdb_set_pnn 0
-check_statd_callout_smnotify "192.168.123.45"
+check_statd_callout_smnotify
ctdb_set_pnn 1
-check_shared_storage_statd_state "192.168.123.46"
+check_shared_storage_statd_state
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.006.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.006.sh
index 1721a5c50b3..35a7f6dcd81 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.006.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.006.sh
@@ -13,6 +13,10 @@ setup "$mode"
ok_null
simple_test_event "startup"
+ctdb_get_my_public_addresses |
+ while read -r _ sip _; do
+ simple_test_event "takeip" "$sip"
+ done
simple_test_event "add-client" "192.168.123.45"
simple_test_event "update"
@@ -20,15 +24,19 @@ ctdb_set_pnn 1
ok_null
simple_test_event "startup"
+ctdb_get_my_public_addresses |
+ while read -r _ sip _; do
+ simple_test_event "takeip" "$sip"
+ done
simple_test_event "add-client" "192.168.123.46"
simple_test_event "update"
ctdb_set_pnn 0
-check_statd_callout_smnotify "192.168.123.45"
+check_statd_callout_smnotify
ctdb_set_pnn 1
-check_statd_callout_smnotify "192.168.123.46"
+check_statd_callout_smnotify
check_shared_storage_statd_state
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.006.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.008.sh
similarity index 60%
copy from ctdb/tests/UNIT/eventscripts/statd-callout.006.sh
copy to ctdb/tests/UNIT/eventscripts/statd-callout.008.sh
index 1721a5c50b3..73e4c5b35d1 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.006.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.008.sh
@@ -7,12 +7,16 @@ if [ -z "$CTDB_STATD_CALLOUT_SHARED_STORAGE" ]; then
fi
mode="$CTDB_STATD_CALLOUT_SHARED_STORAGE"
-define_test "${mode} - 2 x add-client to different nodes, notify on both"
+define_test "${mode} - add-client on different nodes, take 1 IP, notify on
both"
setup "$mode"
ok_null
simple_test_event "startup"
+ctdb_get_1_public_address |
+ while read -r _ sip _; do
+ simple_test_event "takeip" "$sip"
+ done
simple_test_event "add-client" "192.168.123.45"
simple_test_event "update"
@@ -20,15 +24,19 @@ ctdb_set_pnn 1
ok_null
simple_test_event "startup"
+ctdb_get_1_public_address |
+ while read -r _ sip _; do
+ simple_test_event "takeip" "$sip"
+ done
simple_test_event "add-client" "192.168.123.46"
simple_test_event "update"
ctdb_set_pnn 0
-check_statd_callout_smnotify "192.168.123.45"
+check_statd_callout_smnotify
ctdb_set_pnn 1
-check_statd_callout_smnotify "192.168.123.46"
+check_statd_callout_smnotify
check_shared_storage_statd_state
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.050.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.050.sh
new file mode 100755
index 00000000000..54232a491c3
--- /dev/null
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.050.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "confirm sm-notify is ignored"
+
+setup
+
+ok_null
+simple_test_event "startup"
+simple_test_event "sm-notify" "192.168.10.104" "client10" "9999"
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.108.sh
similarity index 70%
copy from ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
copy to ctdb/tests/UNIT/eventscripts/statd-callout.108.sh
index b57bd953f1b..224b58429d9 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.108.sh
@@ -3,4 +3,4 @@
CTDB_STATD_CALLOUT_SHARED_STORAGE="shared_dir"
_dir=$(dirname "$0")
-. "${_dir}/statd-callout.001.sh"
+. "${_dir}/statd-callout.008.sh"
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.150.sh
similarity index 70%
copy from ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
copy to ctdb/tests/UNIT/eventscripts/statd-callout.150.sh
index b57bd953f1b..35c9a34ce44 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.150.sh
@@ -3,4 +3,4 @@
CTDB_STATD_CALLOUT_SHARED_STORAGE="shared_dir"
_dir=$(dirname "$0")
-. "${_dir}/statd-callout.001.sh"
+. "${_dir}/statd-callout.050.sh"
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.201.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.208.sh
similarity index 69%
copy from ctdb/tests/UNIT/eventscripts/statd-callout.201.sh
copy to ctdb/tests/UNIT/eventscripts/statd-callout.208.sh
index 95a95e0d94e..6fc8bf15afe 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.201.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.208.sh
@@ -3,4 +3,4 @@
CTDB_STATD_CALLOUT_SHARED_STORAGE="none"
_dir=$(dirname "$0")
-. "${_dir}/statd-callout.001.sh"
+. "${_dir}/statd-callout.008.sh"
diff --git a/ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
b/ctdb/tests/UNIT/eventscripts/statd-callout.250.sh
similarity index 70%
copy from ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
copy to ctdb/tests/UNIT/eventscripts/statd-callout.250.sh
index b57bd953f1b..35c9a34ce44 100755
--- a/ctdb/tests/UNIT/eventscripts/statd-callout.101.sh
+++ b/ctdb/tests/UNIT/eventscripts/statd-callout.250.sh
@@ -3,4 +3,4 @@
CTDB_STATD_CALLOUT_SHARED_STORAGE="shared_dir"
_dir=$(dirname "$0")
-. "${_dir}/statd-callout.001.sh"
+. "${_dir}/statd-callout.050.sh"
diff --git a/ctdb/tools/statd_callout_helper b/ctdb/tools/statd_callout_helper
index 6ab466f74b2..98c1a7c6e4b 100755
--- a/ctdb/tools/statd_callout_helper
+++ b/ctdb/tools/statd_callout_helper
@@ -80,6 +80,7 @@ create_add_del_client_dir()
# script_state_dir set by ctdb_setup_state_dir()
# shellcheck disable=SC2154
statd_callout_state_dir="${script_state_dir}/statd_callout"
+statd_new_ips_file="${statd_callout_state_dir}/new_ips.txt"
# Set default value, if necessary
: "${CTDB_STATD_CALLOUT_SHARED_STORAGE:=persistent_db}"
@@ -216,9 +217,10 @@
persistent_db_grep_filter="${statd_callout_state_dir}/.grep_filter"
persistent_db_make_grep_filter()
{
+ _ips_file="$1"
while read -r _ip; do
echo "statd-state@${_ip}@"
- done <"$CTDB_MY_PUBLIC_IPS_CACHE" >"$persistent_db_grep_filter"
+ done <"$_ips_file" >"$persistent_db_grep_filter"
}
update_persistent_db()
@@ -231,7 +233,7 @@ update_persistent_db()
exit 0
fi
- persistent_db_make_grep_filter
+ persistent_db_make_grep_filter "$CTDB_MY_PUBLIC_IPS_CACHE"
# Use cat instead of direct grep since POSIX grep does not
# have -h
@@ -249,10 +251,14 @@ update_persistent_db()
list_records_persistent_db()
{
- persistent_db_make_grep_filter
+ persistent_db_make_grep_filter "$statd_new_ips_file"
+ # Redirect below to /dev/null is because some versions of grep
+ # appear to not drain the input if the file passed to -f is
+ # empty (so it matches nothing). This can cause the first sed
+ # command in the pipeline to exit with EPIPE.
$CTDB catdb "$statd_callout_db" |
- sed -n -e 's|^key([0-9]*) = "\([^"]*\)".*|\1|p' |
+ sed -n -e 's|^key([0-9]*) = "\([^"]*\)".*|\1|p' 2>/dev/null |
grep -F -f "$persistent_db_grep_filter" |
sed -e 's|statd-state@\([^@]*\)@\(.*\)|\1 \2|'
@@ -308,11 +314,27 @@ update_shared_dir()
:
}
+save_ip()
+{
+ _ip_addr=$1
+ _f="$statd_new_ips_file"
+ _lock="${_f}.lock"
+ _new="${_f}.new.$$"
+ {
+ flock --timeout 10 9 ||
+ die "statd_callout_helper save_ip: timeout"
+
+ cat "$_f" 2>/dev/null >"$_new"
+ echo "$_ip_addr" >>"$_new"
+ mv "$_new" "$_f"
+ } 9>"$_lock"
+}
+
list_records_shared_dir()
{
while read -r _ip; do
ls "${statd_callout_shared_dir}/statd-state@${_ip}@"*
- done <"$CTDB_MY_PUBLIC_IPS_CACHE" |
+ done <"${statd_new_ips_file}" |
while read -r _f; do
if [ ! -f "$_f" ]; then
continue
@@ -379,6 +401,11 @@ startup()
--
Samba Shared Repository