Print this page
8890 ipfilter and nfs/server are locked in death race
*** 30,71 ****
. /lib/svc/share/smf_include.sh
. /lib/svc/share/ipf_include.sh
zone=`smf_zonename`
- #
- # Handling a corner case here. If we were in offline state due to an
- # unsatisfied dependency, the ipf_method process wouldn't have generated
- # the ipfilter configuration. When we transition to online because the
- # dependency is satisfied, the start method will have to generate the
- # ipfilter configuration. To avoid all possible deadlock scenarios,
- # we restart ipfilter which will regenerate the ipfilter configuration
- # for the entire system.
- #
- # The ipf_method process signals that it didn't generate ipf rules by
- # removing the service's ipf file. Thus we only restart network/ipfilter
- # when the file is missing.
- #
- configure_ipfilter()
- {
- ipfile=`fmri_to_file $SMF_FMRI $IPF_SUFFIX`
- ip6file=`fmri_to_file $SMF_FMRI $IPF6_SUFFIX`
- [ -f "$ipfile" -a -f "$ip6file" ] && return 0
-
- #
- # Nothing to do if:
- # - ipfilter isn't online
- # - global policy is 'custom'
- # - service's policy is 'use_global'
- #
- service_check_state $IPF_FMRI $SMF_ONLINE || return 0
- [ "`get_global_def_policy`" = "custom" ] && return 0
- [ "`get_policy $SMF_FMRI`" = "use_global" ] && return 0
-
- svcadm restart $IPF_FMRI
- }
-
case "$1" in
'start')
# The NFS server is not supported in a local zone
if smf_is_nonglobalzone; then
/usr/sbin/svcadm disable -t svc:/network/nfs/server
--- 30,39 ----
*** 99,110 ****
/usr/sbin/svcadm mark -t maintenance svc:/network/nfs/server
echo "$0: nfsd failed with $rc"
sleep 5 &
exit $SMF_EXIT_ERR_FATAL
fi
-
- configure_ipfilter
;;
'refresh')
/usr/sbin/sharemgr start -P nfs -a
;;
--- 67,76 ----