#!/bin/ksh -p # # # # # # # # # # # # # # # # # # # # # # Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. # . /usr/lib/brand/solaris/common.ksh # States must be kept in sync with zone_state_t. # ZONE_STATE_CONFIGURED 0 (never see) # ZONE_STATE_INCOMPLETE 1 (never see) # ZONE_STATE_UNAVAILABLE 2 # ZONE_STATE_INSTALLED 3 # ZONE_STATE_READY 4 # ZONE_STATE_MOUNTED 5 # ZONE_STATE_RUNNING 6 # ZONE_STATE_SHUTTING_DOWN 7 # ZONE_STATE_DOWN 8 # cmd # # ready 0 # boot 1 # halt 4 ZONENAME=$1 ZONEPATH=$2 state=$3 cmd=$4 ALTROOT=$5 typeset zone init_zone zone "$ZONENAME" "$ZONEPATH" eval $(bind_legacy_zone_globals zone) # If we're not halting the zone, then just return. if [ $cmd -eq 4 ]; then is_brand_labeled if (( $? != 0 )); then # Leave the active boot environment mounted after halting (this # might be a different dataset than what was mounted). # Don't fail if zonepath is unmounted since export of the # zpool can cause this failure. mount_active_be -c zone if (( $? != 0 )); then typeset be_mountpoint zfs list -H -o mountpoint "${zone.root}" 2>/dev/null | read be_mountpoint if [[ $be_mountpoint != "" ]]; then fail_fatal "$f_mount_active_be" fi fi else # Umount dataset on the root. unmount_be zone || fail_fatal "$f_unmount_be" fi fi exit $ZONE_SUBPROC_OK