######################################################################
-if [ -z "$CTDB_NFS_CALLOUT" ] ; then
- CTDB_NFS_CALLOUT="${CTDB_BASE}/nfs-linux-kernel-callout"
-fi
-# Always export, for statd callout
-export CTDB_NFS_CALLOUT
-
-# If the callout wants to use this then it must create it
-export CTDB_NFS_CALLOUT_STATE_DIR="${service_state_dir}/callout-state"
-
-# Export, if set, for use by clustered NFS callouts
-if [ -n "$CTDB_NFS_STATE_FS_TYPE" ] ; then
- export CTDB_NFS_STATE_FS_TYPE
-fi
-if [ -n "$CTDB_NFS_STATE_MNT" ] ; then
- export CTDB_NFS_STATE_MNT
-fi
-
-nfs_callout_cache="${service_state_dir}/nfs_callout_cache"
-nfs_callout_cache_callout="${nfs_callout_cache}/CTDB_NFS_CALLOUT"
-nfs_callout_cache_ops="${nfs_callout_cache}/ops"
-
-nfs_callout_register ()
-{
- mkdir -p "$nfs_callout_cache_ops"
- rm -f "$nfs_callout_cache_ops"/*
-
- echo "$CTDB_NFS_CALLOUT" >"$nfs_callout_cache_callout"
-
- _t=$(eval "$CTDB_NFS_CALLOUT" "register")
- if [ -n "$_t" ] ; then
- echo "$_t" |
- while IFS="" read _op ; do
- touch "${nfs_callout_cache_ops}/${_op}"
- done
- else
- touch "${nfs_callout_cache_ops}/ALL"
- fi
-}
-
-nfs_callout ()
-{
- # Re-run registration if $CTDB_NFS_CALLOUT has changed
- _prev=""
- if [ -r "$nfs_callout_cache_callout" ] ; then
- read _prev <"$nfs_callout_cache_callout"
- fi
- if [ "$CTDB_NFS_CALLOUT" != "$_prev" ] ; then
- nfs_callout_register
- fi
-
- # Run the operation if it is registered...
- if [ -e "${nfs_callout_cache_ops}/${1}" ] || \
- [ -e "${nfs_callout_cache_ops}/ALL" ]; then
- eval "$CTDB_NFS_CALLOUT" "$@"
- fi
-}
-
service_reconfigure ()
{
# Restart lock manager, notify clients
######################################################################
+nfs_callout_init
+
ctdb_start_stop_service
is_ctdb_managed_service || exit 0
}
fi
+######################################################################
+# NFS callout handling
+
+nfs_callout_init ()
+{
+ if [ -z "$CTDB_NFS_CALLOUT" ] ; then
+ CTDB_NFS_CALLOUT="${CTDB_BASE}/nfs-linux-kernel-callout"
+ fi
+ # Always export, for statd callout
+ export CTDB_NFS_CALLOUT
+
+ # If the callout wants to use this then it must create it
+ export CTDB_NFS_CALLOUT_STATE_DIR="${service_state_dir}/callout-state"
+
+ # Export, if set, for use by clustered NFS callouts
+ if [ -n "$CTDB_NFS_STATE_FS_TYPE" ] ; then
+ export CTDB_NFS_STATE_FS_TYPE
+ fi
+ if [ -n "$CTDB_NFS_STATE_MNT" ] ; then
+ export CTDB_NFS_STATE_MNT
+ fi
+
+ nfs_callout_cache="${service_state_dir}/nfs_callout_cache"
+ nfs_callout_cache_callout="${nfs_callout_cache}/CTDB_NFS_CALLOUT"
+ nfs_callout_cache_ops="${nfs_callout_cache}/ops"
+}
+
+nfs_callout_register ()
+{
+ mkdir -p "$nfs_callout_cache_ops"
+ rm -f "$nfs_callout_cache_ops"/*
+
+ echo "$CTDB_NFS_CALLOUT" >"$nfs_callout_cache_callout"
+
+ _t=$(eval "$CTDB_NFS_CALLOUT" "register")
+ if [ -n "$_t" ] ; then
+ echo "$_t" |
+ while IFS="" read _op ; do
+ touch "${nfs_callout_cache_ops}/${_op}"
+ done
+ else
+ touch "${nfs_callout_cache_ops}/ALL"
+ fi
+}
+
+nfs_callout ()
+{
+ # Re-run registration if $CTDB_NFS_CALLOUT has changed
+ _prev=""
+ if [ -r "$nfs_callout_cache_callout" ] ; then
+ read _prev <"$nfs_callout_cache_callout"
+ fi
+ if [ "$CTDB_NFS_CALLOUT" != "$_prev" ] ; then
+ nfs_callout_register
+ fi
+
+ # Run the operation if it is registered...
+ if [ -e "${nfs_callout_cache_ops}/${1}" ] || \
+ [ -e "${nfs_callout_cache_ops}/ALL" ]; then
+ eval "$CTDB_NFS_CALLOUT" "$@"
+ fi
+}
+
########################################################
# tickle handling
########################################################