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 ----