yes, this does.
$ ls -l /opt/VRTSvcs/bin/CVMVolDg/monitor
-rwxr--r-- 1 root sys 5486 Aug 13 15:11 /opt/VRTSvcs/bin/CVMVolDg/monitor
$ cksum /opt/VRTSvcs/bin/CVMVolDg/monitor
1503281383 5486 /opt/VRTSvcs/bin/CVMVolDg/monitor
$cat /opt/VRTSvcs/bin/CVMVolDg/monitor
#!/bin/sh
# @(#)src/common/vxvm/CVMVolDg/scripts/monitor 1.13 10/01/07 00:30:28 - 1999-2004
#ident "@(#)vcscvm:src/common/vxvm/CVMVolDg/scripts/monitor 1.13"
#
# Copyright (c) 1999-2004 Symantec Corporation.
# All rights reserved.
#
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF
# SYMANTEC CORPORATION. USE, DISCLOSURE OR REPRODUCTION IS PROHIBITED
# WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SYMANTEC CORPORATION.
#
# The Licensed Software and Documentation are deemed to be "commercial
# computer software" and "commercial computer software documentation"
# as defined in FAR Sections 12.212 and DFARS Section 227.7202.
#
# This is the monitor script for a CVM shared disk group.
cvmvoldg_nvols=0
# source the library
# parse the command line arguments.
cvmvoldg_resname=$1
cvmvoldg_dgname=$2
cvmvoldg_nvols=$3
cvmvoldg_catid=20007
VCSHOME="${VCS_HOME:-/opt/VRTSvcs}"
. $VCSHOME/bin/ag_i18n_inc.sh
VCSAG_SET_ENVS $cvmvoldg_resname $cvmvoldg_catid
. /opt/VRTSvcs/bin/CVMVolDg/cvmvoldg.lib
trap "" 3
##################### M A I N #####################
_funcname=main
echo_trace_enter
VXPRINT_TMPFILE="/var/VRTSvcs/lock/${cvmvoldg_resname}_${cvmvoldg_dgname}_tmp"
VCS_VOL_STAT="/var/VRTSvcs/lock/${cvmvoldg_resname}_${cvmvoldg_dgname}_stat"
VCS_VXNOTIFY_FILE="/var/VRTSvcs/lock/${cvmvoldg_resname}_${cvmvoldg_dgname}_vxnotify"
VCS_PRN="/var/VRTSvcs/lock/${cvmvoldg_resname}_${cvmvoldg_dgname}_tmp"
VXNOTIFY_SUM_STORE="/var/VRTSvcs/lock/${cvmvoldg_resname}_${cvmvoldg_dgname}_sumstore"
VXNOTIFY_PID="/var/VRTSvcs/lock/${cvmvoldg_resname}_${cvmvoldg_dgname}_pid"
VXPRINT_TMPFILE="/var/VRTSvcs/lock/${cvmvoldg_resname}_${cvmvoldg_dgname}_tmp"
shift 3
# create volume list. This will eat up all the volumes too
cvmvoldg_make_vollist _cvm_res $cvmvoldg_nvols $*
if [ $_cvm_res -ne 0 ] ; then
VCSAG_LOG_MSG "W" "could not create volume list" 1034
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_FAILURE
exit $CVMVOLDG_MONITOR_FAILURE
fi
shift $cvmvoldg_nvols
cvmvoldg_activation=$1
echo_debug "monitor: activation requested is $cvmvoldg_activation"
echo_debug "monitor: nvols is $cvmvoldg_nvols"
echo_debug "monitor: dg is $cvmvoldg_dgname"
echo_debug "monitor: resource name is $cvmvoldg_resname"
echo_debug "monitor: volume list is <$cvmvoldg_vollist >"
# do initial condition testing. The reason we don't print a warning
# message here is because VCS will keep calling monitor for resources
# that are offline too just to make sure that the resource are offline.
# That means a whole lot of messages for resource that are offline.
cvmvoldg_monitor_setup _cvm_res
if [ $_cvm_res -ne 0 ] ; then
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_FAILURE
exit $CVMVOLDG_MONITOR_FAILURE
fi
# if something happened to notify, we will have to restart it. However, that
# means that we will also have to do all verification that was done in the
# online script again.
# we check for all initial conditions, like dgs being imported etc, and then
# start vxnotify. There is a hole in there that the conditions can change.
# Fix that.
cvmvoldg_check_notify_health _cvm_res
if [ $_cvm_res -ne 0 ] ; then
VCSAG_LOG_MSG "W" "vxnotify killed. rechecking status" 1035
# store the output of the vxprint
cvmvoldg_save_vxprint $VXPRINT_TMPFILE _cvm_res $VXPRINT_TMPFILE_FMTED
if [ $_cvm_res -ne 0 ] ; then
VCSAG_LOG_MSG "E" "Error saving vxprint output" 1036
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_FAILURE
exit $CVMVOLDG_MONITOR_FAILURE
fi
# check everything again
cvmvoldg_check_all "MONITOR" _cvm_res
if [ $_cvm_res -ne 0 ] ; then
VCSAG_LOG_MSG "E" "Recheck of status check failed" 1037
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_FAILURE
exit $CVMVOLDG_MONITOR_FAILURE
fi
cvmvoldg_setup_notify _cvm_res
if [ $_cvm_res -ne 0 ] ; then
VCSAG_LOG_MSG "E" "Can not restart vxnotify. Failed" 1038
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_FAILURE
exit $CVMVOLDG_MONITOR_FAILURE
fi
# setup vxstat
cvmvoldg_setup_stat
# since we reset everything then we don't need to check the
# vxnotify sum_stat file. Just exit with success now.
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_SUCCESS
exit $CVMVOLDG_MONITOR_SUCCESS
fi
# check everything again in case node died and got live again.
cvmvoldg_check_all "MONITOR" _cvm_res ####
if [ $_cvm_res -ne 0 ] ; then
VCSAG_LOG_MSG "E" "Recheck of status check failed" 1037
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_FAILURE
exit $CVMVOLDG_MONITOR_FAILURE
fi
# vxnotify is fine. If nothing changed, then just return.
cvmvoldg_check_notify_status _cvm_res
if [ $_cvm_res -eq 0 ] ; then
# try doing IO to volumes
cvmvoldg_do_iotest 0 _cvm_res
if [ $_cvm_res -ne 0 ] ; then
VCSAG_LOG_MSG "E" "IO test failed" 1073
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_FAILURE
exit $CVMVOLDG_MONITOR_FAILURE
fi
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_SUCCESS
exit $CVMVOLDG_MONITOR_SUCCESS
fi
# see if anything changed that should not have. cvmvoldg_parse_notify_op will
# print correct log messages to the enging_A.log
cvmvoldg_parse_notify_output _cvm_res
if [ $_cvm_res -eq 0 ] ; then
echo_debug "monitor: monitor returning success"
else
VCSAG_LOG_MSG "E" "monitor failed" 1039
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_FAILURE
exit $CVMVOLDG_MONITOR_FAILURE
fi
_funcname=main && echo_trace_exit $CVMVOLDG_MONITOR_SUCCESS
exit $CVMVOLDG_MONITOR_SUCCESS
===========================================
[root@HP-oskrap1p]/>$ gabconfig -a
GAB Port Memberships
===============================================================
Port a gen 66df28 membership 01
Port b gen 66df27 membership 01
Port f gen 66df32 membership 01
Port h gen 66df2a membership 01
Port v gen 66df2d membership 01
Port w gen 66df2f membership 01
[root@HP-oskrap1p]/>$ hastatus -sum
-- SYSTEM STATE
-- System State Frozen
A oskrap1p RUNNING 0
A oskrap2p RUNNING 0
-- GROUP STATE
-- Group System Probed AutoDisabled State
B cfs oskrap1p Y N ONLINE
B cfs oskrap2p Y N ONLINE
B cvm oskrap1p Y N ONLINE
B cvm oskrap2p Y N ONLINE
$ swverify VRTSperl
======= 08/25/10 12:21:01 KST BEGIN swverify SESSION
(non-interactive) (jobid=oskrap1p-0121)
* Session started for user "root@oskrap1p".
* Beginning Selection
* Target connection succeeded for "oskrap1p:/".
* Software selections:
VRTSperl.VRTSPERL,l=/opt/VRTSperl,r=5.8.8.10,a=HP-UX_B.11.31_IA/PA,v=Symantec,fr=5.8.8.10,fa=HP-UX_B.11.31_IA/PA
* Selection succeeded.
* Beginning Analysis
* Session selections have been saved in the file
"/.sw/sessions/swverify.last".
* The analysis phase succeeded for "oskrap1p:/".
* Verification succeeded.
NOTE: More information may be found in the agent logfile using the
command "swjob -a log oskrap1p-0121 @ oskrap1p:/".
======= 08/25/10 12:21:05 KST END swverify SESSION (non-interactive)
(jobid=oskrap1p-0121)