#!/bin/ksh -p # # Copyright (c) 1988, 2011, Oracle and/or its affiliates. All rights reserved. # . /lib/svc/share/smf_include.sh case "$1" in 'start') # # If there are non-global UFS filesystems with quotas, check and # enable them. # # vlist is the non-global filesystems in vfstab requesting # quotas vlist=$(/usr/bin/nawk '$1 !~ /^(#|-)/ && $4 == "ufs" { if (match($7, "(^|,)(quota|rq)(,|$)") != 0 && match($7, "(^|,)global(,|$)") == 0) print $1; }' /etc/vfstab) if [[ -n "$vlist" ]]; then # mlist is the filesystems in mnttab that are ufs, # mounted rw, and without quotas turned on mlist=$(/usr/sbin/mount -p | /usr/bin/nawk '$4 == "ufs" { if (match($7, "(^|,)ro(,|$)") == 0) print $1; }') # qlist is the intersection of vlist and mlist qlist=$(echo "$vlist\n-\n$mlist" | /usr/bin/nawk '{if ($1 == "-") { mlist = 1; } else if (mlist == 0) { vlist[$1] = 1; } else if (vlist[$1]) { print $1; } }') # # Just check and enable the non-global UFS file systems # with quotas enabled. Note that "quotacheck -a" and # "quotaon -a" will try to process all UFS entries with # quotas rather than excluding the entries with the # global option (the global entries are handled later in # another script if the cluster package is installed). # if [[ -n "$qlist" ]]; then echo 'Checking UFS quotas: \c' /usr/sbin/quotacheck -p $qlist echo 'done.' /usr/sbin/quotaon $qlist fi fi ;; 'stop') # # Gather a list of not-global mounted quota'd UFS filesystems # mlist=$(/usr/sbin/mount -p | /usr/bin/nawk '$4 == "ufs" { if (match($7, "(^|,)quota(,|$)") != 0 && match($7, "(^|,)global(,|$)") == 0) print $1; }') if [[ -n $mlist ]]; then /usr/sbin/quotaoff $mlist fi ;; *) exit $SMF_EXIT_ERR_CONFIG ;; esac exit $SMF_EXIT_OK