# The names of the HAST resources, as listed in /etc/hast.conf
# delay in mounting HAST resource after becoming primary
# end of user configurable stuff
logger -p $log -t $name "Switching to primary provider for ${resources}."
# Wait for any "hastd secondary" processes to stop
for disk in ${resources}; do
while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do
# Switch role for each disk
hastctl role primary ${disk}
logger -p $log -t $name "Unable to change role to primary for resource ${disk}."
# Wait for the /dev/hast/* devices to appear
for disk in ${resources}; do
[ -c "/dev/hast/${disk}" ] && break
if [ ! -c "/dev/hast/${disk}" ]; then
logger -p $log -t $name "GEOM provider /dev/hast/${disk} did not appear."
logger -p $log -t $name "Role for HAST resources ${resources} switched to primary."
logger -p $log -t $name "Mounting disks."
for disk in ${resources}; do
fsck -p -y -t ufs /dev/hast/${disk}
mount /dev/hast/${disk} /hast/${disk}
logger -p $log -t $name "Switching to secondary provider for ${resources}."
# Switch roles for the HAST resources
for disk in ${resources}; do
if ! mount | grep -q "^/dev/hast/${disk} on "
hastctl role secondary ${disk} 2>&1
logger -p $log -t $name "Unable to switch role to secondary for resource ${disk}."
logger -p $log -t $name "Role switched to secondary for resource ${disk}."