	 kzZ h:h:by name         by name         BUILD           d   	kH      A                                                ./               A          A          
k&  m            h:h:h:0        v        ./lpp_name               m          m          4 R S vsd {
vsd.sysctl 3.2.0.4 01 Y U En_US VSD sysctl commands
[
*ifreq ssp.basic (3.2.0.0) 3.2.0.8
*ifreq ssp.css (3.2.0.0) 3.2.0.7
*ifreq ssp.sysman (3.2.0.0) 3.2.0.5
*ifreq ssp.vsdgui (3.2.0.0) 3.2.0.1
*ifreq vsd.cmi (3.2.0.0) 3.2.0.3
*ifreq vsd.rvsd.scripts (3.2.0.0) 3.2.0.5
*ifreq vsd.vsdd (3.2.0.0) 3.2.0.7
%
/usr/lpp/csd/sysctl 432
/usr/lpp/SAVESPACE 432
/usr/lib/objrepos 8
/usr/lpp/csd/bin 8
INSTWORK 56 24
%
%
%
IY11913 GENERIC FIXES FOR PSSP 320  14 IY11913 GENERIC FIXES FOR PSSP 320
IY13449 GENERIC FIXES FOR PSSP 320  8 IY13449 GENERIC FIXES FOR PSSP 320
IY14619 UPDATEVSDTAB SCRIPT DOES NOT TAKE INTO ACCOUNT MIRRORING WHEN  1 IY14619 UPDATEVSDTAB SCRIPT DOES NOT TAKE INTO ACCOUNT MIRRORING WHEN
IY16629 GENERIC FIXES FOR PSSP 320  7 IY16629 GENERIC FIXES FOR PSSP 320
IY16427 ucfgvsd - returns error from SDRGetObjects call  3 IY16427 ucfgvsd - returns error from SDRGetObjects call
%
]
}
    	k\      A                                                ./usr            A          A          
k{      A                                                ./usr/lpp                A          A          k_      A                                                ./usr/lpp/vsd/vsd.sysctl/3.2.0.4                 A          A          kꦿ z m            h:h:h:0        r        ./usr/lpp/vsd/vsd.sysctl/3.2.0.4/liblpp.a                m          m          <aiaff>
5620        0           68          4232        0           15          186         0           983197363   30007       1           644         9   productid `
vsd 5765-D5100
   268         564         68          983197364   30007       1           644         20  vsd.sysctl.copyright`
 Licensed Materials - Property of IBM

 5765D5100
   (C) Copyright International Business Machines Corp. 1985, 2000.

 All rights reserved.
 US Government Users Restricted Rights - Use, duplication or disclosure
 restricted by GSA ADP Schedule Contract with IBM Corp.
2826        3500        186         983197711   30007       1           644         20  vsd.sysctl.inventory`
/usr/lpp/csd/sysctl/sysctl_vsd.cmds:
          owner = root
          group = system
          mode = 644
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 9077
          checksum = "33602     9 "

/usr/lpp/csd/sysctl/vsdl1diag2.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 5465
          checksum = "45198     6 "

/usr/lpp/csd/sysctl/domkvglv.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 33221
          checksum = "15066    33 "

/usr/lpp/csd/sysctl/removevsd:
          owner = root
          group = system
          mode = 755
          type = FILE
          links = /usr/lpp/csd/bin/removevsd
          class = apply,inventory,vsd.sysctl
          size = 3633
          checksum = "56016     4 "

/usr/lpp/csd/sysctl/removevsd2.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 20271
          checksum = "43187    20 "

/usr/lpp/csd/sysctl/updatevsdtab2.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 16524
          checksum = "27750    17 "

/usr/lpp/csd/sysctl/createhsd2.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 34037
          checksum = "02755    34 "

/usr/lpp/csd/sysctl/createvsd2.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 56201
          checksum = "64608    55 "

/usr/lpp/csd/sysctl/dodelvg.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 6633
          checksum = "57419     7 "

/usr/lpp/csd/sysctl/doimportvg.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 7527
          checksum = "33325     8 "

/usr/lpp/csd/sysctl/dovaryonvg.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 2553
          checksum = "62219     3 "

/usr/lpp/csd/sysctl/getavailpv.perl:
          owner = root
          group = system
          mode = 755
          type = FILE
          class = apply,inventory,vsd.sysctl
          size = 3660
          checksum = "22506     4 "

86          3692        564         983197711   30007       1           644         15  vsd.sysctl.size `
/usr/lpp/csd/sysctl 432
/usr/lpp/SAVESPACE 432
/usr/lib/objrepos 8
/usr/lpp/csd/bin 8
436         4232        3500        983197711   30007       1           644         13  vsd.sysctl.al `
./usr/lpp/csd/sysctl/sysctl_vsd.cmds
./usr/lpp/csd/sysctl/vsdl1diag2.perl
./usr/lpp/csd/sysctl/domkvglv.perl
./usr/lpp/csd/sysctl/removevsd
./usr/lpp/csd/sysctl/removevsd2.perl
./usr/lpp/csd/sysctl/updatevsdtab2.perl
./usr/lpp/csd/sysctl/createhsd2.perl
./usr/lpp/csd/sysctl/createvsd2.perl
./usr/lpp/csd/sysctl/dodelvg.perl
./usr/lpp/csd/sysctl/doimportvg.perl
./usr/lpp/csd/sysctl/dovaryonvg.perl
./usr/lpp/csd/sysctl/getavailpv.perl
1280        5620        3692        983197711   30007       1           644         18  vsd.sysctl.fixdata`
fix:
	name = IY11913
	abstract = GENERIC FIXES FOR PSSP 320
	type = f
	filesets = "ssp.authent:3.2.0.1\n\
ssp.basic:3.2.0.1\n\
ssp.cediag:3.2.0.1\n\
ssp.clients:3.2.0.1\n\
ssp.css:3.2.0.1\n\
ssp.st:3.2.0.1\n\
ssp.sysman:3.2.0.1\n\
vsd.cmi:3.2.0.1\n\
vsd.hsd:3.2.0.1\n\
vsd.rvsd.hc:3.2.0.1\n\
vsd.rvsd.rvsdd:3.2.0.1\n\
vsd.rvsd.scripts:3.2.0.1\n\
vsd.sysctl:3.2.0.1\n\
vsd.vsdd:3.2.0.1\n\
"
	symptom = ""

fix:
	name = IY13449
	abstract = GENERIC FIXES FOR PSSP 320
	type = f
	filesets = "ppe.poe:3.1.0.4\n\
ptpe.program:3.2.0.3\n\
ssp.basic:3.2.0.5\n\
ssp.clients:3.2.0.3\n\
ssp.css:3.2.0.4\n\
ssp.resctr.rte:3.2.0.1\n\
vsd.sysctl:3.2.0.2\n\
vsd.vsdd:3.2.0.4\n\
"
	symptom = ""

fix:
	name = IY14619
	abstract = UPDATEVSDTAB SCRIPT DOES NOT TAKE INTO ACCOUNT MIRRORING WHEN
	type = f
	filesets = "vsd.sysctl:3.2.0.3\n\
"
	symptom = ""

fix:
	name = IY16629
	abstract = GENERIC FIXES FOR PSSP 320
	type = f
	filesets = "ssp.basic:3.2.0.8\n\
ssp.css:3.2.0.7\n\
ssp.sysman:3.2.0.5\n\
ssp.vsdgui:3.2.0.1\n\
vsd.rvsd.scripts:3.2.0.5\n\
vsd.sysctl:3.2.0.4\n\
vsd.vsdd:3.2.0.7\n\
"
	symptom = ""

fix:
	name = IY16427
	abstract = ucfgvsd - returns error from SDRGetObjects call
	type = f
	filesets = "vsd.cmi:3.2.0.3\n\
vsd.rvsd.scripts:3.2.0.5\n\
vsd.sysctl:3.2.0.4\n\
"
	symptom = ""

185         0           4232        0           0           0           0           0   `
6           68          186         564         3500        3692        4232        productid vsd.sysctl.copyright vsd.sysctl.inventory vsd.sysctl.size vsd.sysctl.al vsd.sysctl.fixdata  kI            u#  h:}9:0         ƕ  u#      ./usr/lpp/csd/sysctl/sysctl_vsd.cmds                                 # IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1994,2000 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#
#"@(#)29   1.13   src/csd/sysctl/sysctl_vsd.cmds, vsd, csd_rmoh, rmohs01a 7/7/00 14:49:42"
####################################################################
#
# Module: sysctl_vsd.cmds
#
#-------------------------------------------------------------------
#
# Description:
#   This file contains Tcl procs for the VSD sysctl
#   server side application. 
#
#   sysctl_mkvglv
#   sysctl_varyoffvg
#   sysctl_importvg
#   sysctl_varyonvg
#   sysctl_dellv
#   sysctl_lsucfgvsd
#   sysctl_lsucfghsd
#   sysctl_vsdl1diag
#   sysctl_vsdsklst
#   sysctl_delvg
#   sysctl_vsdcheck
#   sysctl_createvsd2
#   sysctl_createhsd2
#   sysctl_removevsd2
#   sysctl_removehsd2
#   sysctl_vsdsklst2
#   sysctl_updatevsdnode2
#   sysctl_updatevsdtab2
#   sysctl_updatehsd2
#   sysctl_cfghsdvsd2
#   sysctl_ucfghsdvsd2
#   sysctl_vsdl1diag2
#   sysctl_commit
#   sysctl_rollback
#   sysctl_delvg
#
#
###################################################################
# globals used to get/free dce credentials
create var envrc 0 SYSTEM
create var nkrb5 {} SYSTEM
create var okrb5 {} SYSTEM
###################################################################

create proc sysctl_mkvglv {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/domkvglv.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_varyoffvg {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
	set rc [ catch "exec /usr/lpp/csd/sysctl/dovaryoffvg.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_importvg {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/doimportvg.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_varyonvg {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dovaryonvg.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_dellv {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dodellv.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_lscfgvsd {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dolscfgvsd.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_lscfghsd {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dolscfghsd.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_lsucfgvsd {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dolsucfgvsd.perl $args " Output ] 
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_lsucfghsd {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dolsucfghsd.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_vsdl1diag {} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dovsdl1diag.perl " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_vsdsklst {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dovsdsklst.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


# This routine is used to check if a user can run sysctl and sysctl_vsd*
#
create proc sysctl_vsdcheck {} {ACL /etc/sysctl.vsd.acl} {
        if { [ aclcheck -f /etc/sysctl.vsd.acl root.SPbgAdm ] } {
#           sysctl_vsdcheck: Authorization confirmed.
            return
        }
        return -code error "sysctl_vsdcheck: Not authorized to run sysctl vsd commands.\n                 Principal root.SPbgAdm is not defined.";
}


# Since we plan to let any user with sysctl_vsd authorization run
# VSD usability commands, he must be enabled to run SDR commands and
# vsd admin commands such as defvsd, defhsd, ...
# in order to avoid creating a lot of sysctl_SDRxxx, sysctl_defvsd ...
# we create following sysctl_ commands to transfer root group to the user
create proc sysctl_createvsd2 {args} {ACL /etc/sysctl.vsd.acl} {
    vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/createvsd2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_createhsd2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/createhsd2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_removevsd2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/removevsd2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_removehsd2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/removehsd2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_vsdsklst2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/vsdsklst2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_updatevsdnode2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/updatevsdnode2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_updatevsdtab2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/updatevsdtab2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_updatehsd2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/updatehsd2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_cfghsdvsd2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/cfghsdvsd2.ksh $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_ucfghsdvsd2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/ucfghsdvsd2.ksh $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_vsdl1diag2 {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/vsdl1diag2.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_commit {} {ACL /etc/sysctl.vsd.acl} {
    set f [open /usr/lpp/csd/vsdfiles/vsd_rollback r+]
    seek $f 0 end
    puts $f "COMMIT"
    close $f

	vsd_get_creds
    set In [ open "| /bin/grep COMMIT /usr/lpp/csd/vsdfiles/vsd_rollback " ]
    while {![eof $In]} {
      gets $In Line
      puts stdout $Line
    }
    vsd_free_creds
    return
}


create proc sysctl_rollback {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dorollback.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}


create proc sysctl_delvg {args} {ACL /etc/sysctl.vsd.acl} {
	vsd_get_creds
    set rc [ catch "exec /usr/lpp/csd/sysctl/dodelvg.perl $args " Output ]
    puts stdout $Output
    vsd_free_creds
    return
}

# get credentials
create proc vsd_get_creds {} SYSTEM {
    global env nkrb5 okrb5 envrc
    # First try to get DCE credentials
    # note, dsrvtgt returns 0 if DCE if not being used.
    set rc [catch {exec /usr/bin/dsrvtgt ssp/spbgroot} nkrb5]
    if { $rc != 0 } {
        error "$nkrb5"
    }
    if { $nkrb5 != ""} {
        set envrc [catch {set okrb5 $env(KRB5CCNAME)}]
        set env(KRB5CCNAME) $nkrb5
    }

    # Try to get kerberos credentials
    set env(KRBTKFILE) "/tmp/tktvsd.[pid]"
    set rc [catch {exec /usr/lpp/ssp/kerberos/bin/ksrvtgt root SPbgAdm} credsmsg]
    if { $rc != 0 } {
        error "$credsmsg"
    }
    return
}
 
# free credentials
create proc vsd_free_creds {} SYSTEM {
    global env nkrb5 okrb5 envrc
    # free dce credentials if they exist
    if { $nkrb5 != ""} {
        catch {exec /bin/kdestroy}
        if { $envrc == 0 } {
          set env(KRB5CCNAME) $okrb5
        } else {
            unset env(KRB5CCNAME)
        }
    }
    # free kerberose credentials if they exist
    catch {exec /bin/k4destroy}
    return
}

# Simple proc to test the use of credentials
create proc vsd_test_creds {} NONE {
  vsd_get_creds
  set rc [ catch "exec /bin/sysctl whoami -v " Output ]
  puts stdout $Output
  vsd_free_creds
  return
}

erlk,$ (           Y  h:}9:0           Y      ./usr/lpp/csd/sysctl/vsdl1diag2.perl                                 #!/usr/lpp/ssp/perl/bin/perl 
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1994,2000 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#####################################################################
#                                                                   #
# Module: vsdl1diag2.perl
#                                                                   #
# CPRY PGM
# 
#  Licensed Materials - Property of IBM
# 
#  5765-296 PSSP
# 
#  (C) Copyright IBM Corp. 1994, 1995 All Rights Reserved.
# 
#  US Government Users Restricted Rights - Use, duplication or
#  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# 
# CPRY
#                                                                   #
#-------------------------------------------------------------------#
#                                                                   #
# Description: 
#                                                                   #
# Inputs:                                                           #
#
#                                                                   #
# Outputs:                                                          #
#
#
#       Returns:                                                    #
#           0 - if completed successfully                           # 
#           1 - if bad command line or bad SDR return               #
#                                                                   #
# Syntax:                                                           #
#                                                                   #
#
#
# External Ref:                                                     #
#       sp_msg                                                      #
#       SDRChangeAttrValues                                         #
#       SDRGetObjects                                               #
#                                                                   #
# Internal Ref:                                                     #
#       none                                                        #
#                                                                   #  
#####################################################################
#"@(#)37   1.8.1.1   src/csd/sysctl/vsdl1diag2.perl, vsd, csd_rmoh, rmohs01a 7/7/00 15:16:12"


# This file is the client or user command to do VSD consistency check
# a user must run kinit before eovking this program

$MSGCAT="/usr/lib/nls/msg/\?/vsd.cat";
$SPMSG="/usr/lpp/csd/bin/spmsg_csd";
$SDR_PATH="/usr/lpp/ssp/bin";

$USAGE="Usage: vsddiag";

$progname = "vsddiag";
$FAN_OUT=128;
$TIMEOUT = 28800;
sub print_usage {
    system "$SPMSG VSDSYSCTLINF $MSGCAT VSDSYSCTLINF08 '$USAGE\n' ";
}


if ($ARGV[0] eq "-P") {
    shift(@ARGV);
    $sp_name = $ARGV[0];
    shift(@ARGV);
    $ENV{'SP_NAME'} = $sp_name;
}

########################################################################
#
# Check for usage needed
#
########################################################################
if ($ARGV[0] eq "-h") {
    &print_usage;
    exit 0;
}


# check that SDR is accessable
# if SDR is not accessable, cfgvsd will check flat files
`$SDR_PATH/SDRGetObjects SP control_workstation > /dev/null 2>&1`;
if ( $? != 0 ) {
    system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG02 '%1\$s:  0034-602  The repository cannot be accessed.  Return code was %2\$s.\n' $progname $?  ";
    print "VSD_USA ERROR\n";
     exit 1;
}


# get hostnames to convert from numbers to hostname
open(HOSTNAMES, "/usr/lpp/ssp/bin/SDRGetObjects -q Node node_number reliable_hostname VSD_adapter | ") || die "Can't get HOSTNAMES";
$junk = <HOSTNAMES>;
while(<HOSTNAMES>) {
	($num, $name, $vsd_adapter) = split;
	$hostname{$num} = $name if $vsd_adapter ne "\"\"";
}

#convert node numbers to hostnames
$hosts = join(',', values(%hostname));

# print "vsds=", $vsds, "; hosts=", $hosts, ".\n";

if ( $hosts eq "" ) {
        system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG11 '%1\$s:  0034-611  No valid VSD hosts specified.\n' $progname ";
    print "VSD_USA ERROR\n";
	exit 2;
}
if ($hosts =~ /,/) {
    @node_table = split(/,/, $hosts);
}
else {
    @node_table[0] = $hosts;
}
foreach $n (@node_table) {
    $run_node_list = $run_node_list . " -h $n";
}

# after exec the current perl script file is gone so that we should use system
# instead of exec
# sysctl takes a collection of node names as argument
# if -c does not work; we need to change it to -h nodename1 -h nodename2 ...
#
system "/usr/lpp/ssp/bin/sysctl -f $FAN_OUT -T $TIMEOUT $run_node_list sysctl_vsdl1diag > /tmp/vsdl1.$$";


$rc=$?;
if ($rc > 0) {
    system "cat /tmp/vsdl1.$$";
    system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG10 '%1\$s:  0034-610  Failed to run sysctl %2$s.\n' $progname \"sysctl_vsdl1diag\"  ";
    system "rm -f /tmp/vsdl1.$$";
    print "VSD_USA ERROR\n";
    exit 3;
} 

system "/usr/lpp/csd/sysctl/checkvsdl1 /tmp/vsdl1.$$  2>&1";
if ($? > 0) {
    system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG01 '%1\$s:  0034-601  %2\$s failed.\n' $progname \"/usr/lpp/csd/sysctl/checkvsdl1\"  ";
    system "rm -f /tmp/vsdl1.$$";
    print "VSD_USA ERROR\n";
    exit 4;
}
system "rm -f /tmp/vsdl1.$$";
exit 0;
s:     lbq `           Ł  h:Җ:Җ:0         ʈ  +K      ./usr/lpp/csd/sysctl/domkvglv.perl l                                   
	  e
$ainoprst"#;_dhlmv()-/=Sbcfgku{}	&',.01:ADGLOPRTV\wxy+234@CEFIM[]q|%56>HKNUYj~!89<?B`z*7QW^ZX@7IVR'JHj>sWb@RHB ZCBbƔ}7t7Vu^]ʪ?\[OLC؇b)iV+L18Q&0C؆@G!P$kB8:Sr@ Dv!2*V潧bW8-pRLfYm<eT2XK7%^]|a{}Vo/[O,?2Դͫx60^ ?b002.,.*8HhLWb                 Cfձ/N+\ʫ!F@`T"6!/p][ܭ2X+G "6!01 HF<4*W p@@ 5U^eJ\״؆<+{W)s3t^2*V,i.06!龅Ս+7JbRZfռVn/\uS p6!F@!@"D$H"D$H"D$H"D$H"D$H"D$H"D$H"D$H"H1bм*0؇1MLnf.kE;cK*{it̛Z][^]W*@ "C؆&b>N/fMpwUNSn0TN7LuGW}x]NӋ^K^N؃aHh$?CS}+җ)ޫ]iFXS-sb	:i龆9kb<夭dI(hDoHrDÁDbJ&(hM䡉Q7Љ6!ܪQNNfO|2,Cb)|"6k7N\7V{ c;Mx]GnxX΁C}uЧU^^#JU/޳?)x&	U/,˄S؇J^kg:)mb<q_U.w¬CM5]8M\CR}$^tLuS!vTNX?Rz^	bUqv)zƗ3Ust!UzJ˼=GM=7~4U|uꫛ^au4CZxQ!@U.w#i%_Jy{Kbxay۫k<uuR؇aw.ޣku.d=?ַBTuw*t_'N !WRz=gr׍ӳ?NJN7]ʫ)؇*tx	?)}oXyw+MaCs)A[	/Dҕ(E;¹!l'Hmb>&58÷SSbַBazOτS!җ.w$_?tI:T/M\9x{_I.>]W:>0HX4=rVòPp$_Ƅ!W3p		D8PLhL 8PLhL!(&4&?%GB%A1<<<=:U[Ƅ`"	cBb0؇HϜ4¡?Xωgq^2cJ?DT+	+{iU؇HM(9kJS	%uWJZҔǂlC$Hx':UǱFu\7(Ϋ^?7.N؃bC7Y!|/c}wӄkV!|/5|" ?(%C%^+I[rJ6r[e^+,'_圞TPgCT~p18is*+(g!%_J\LXXJm' Hι	/Dҕ(E;	1D|^	"R]*VoG	"K4)N<x&8?	WUt)N<x'؇1 0pnpr͘bI-C?5G@ֳ͉rC"Qru?AW_CFb                 @a?C <D<&\z&N/UI.eUsT;^eSZ*sZ*P@ ݈ dq $
c'aCo発U|?EissSh880&4EcgFƀӹL79:	7IgYKV ThP22E\")jz

DQb(<L,N
К2Lp^uOE*0**Pf2jD2et2z&z,biQAƀ7IVR'JHgXѲ
:HQ(y3t5e"e5虇t=4l@HQ(y3t5e"e2ρ豥@ҩ w!G̡dՔҒ&Y=4lCN,aCplB|Γ*(Ӌ+gƍHTlU#VӃeEu\tQDFOE*(ӚF=ʊ$(!G1>NM908efĴⱥ̪J1al+)J;GIH#3e(9kD4sJNHX'-3H*DT+J6DעiAZRxO	WUt)N<x'Ece8zqXU\YCeA5ny*PEL2Lg.h"ìb^y9]GA5nzj0$ Xv 0 4	@ᐋT *p4	N0ՇA5naT *p4 a.jQ0KT *p4  `@h4SX|	tV
cJNa.jQf4@Th;V]չiP( ,,w)>	sGC iPѠpD4SX|	tV"2rTo8Ҷ{JJeE
AB ,"TT&5* x'hTLT9 XuAAAAAAAAAAAAAAAAAAbCef#<f]i                  12	
gBDEFB><qᒛTm)hTLT@Yy(aMc"a! ?Eg<(Շ҄Smb2 L:RD
UʪLNNҁ\B,.dAi@ŮdQc]K.kTPg}7/t+l*(2Lȭ\eL^0CU|a4rp6$2@6 b??J*0*+*JceE
AB 4m@@$|iKrX.B5^fnp;]L6) z,y(nO]J1O)Ң)	$ʊE^|"kA4rp6貃iu"2M<A/"?}] n,Yz18=~T`"TW*(T***ʊJF%EDpDq P, #($q9a)ㇴɎMxQD¢x8dd\dr}v̺,:43TPe!1$QA[`:֘Smb<lNMҭ
ǘ` q@qPO#37x5fqNru3QAgf_)`AClAL ٗm|	ts+kgD6TPT4,*+"TT&5*J(h% Y @GPHisմ S9kiu?E\񲢉DpȸE<tXuhn@},Υ;Tz@bA?L c "dg)P6vɧ29NU LrdQgd94#gJqNqvw)NҁgaucKq@qTX!Weu]MVVm6´gVc"hgn.ںfr 1Q9^t̛ZZe6Nk\+L?pt̢ì
fMpm3&ָV=P~,	ɫ)/DɯD=[5SqsGEʺfW_)J	öNk\+B(iهV4sLCyvN5iVԢavXԲb\V%e1X @0VV`%A#BFD,%!%ĕА,Tx4,87¹!8@¢br.sұԁXu1jc"x)"ÌS|+"	ĄDAE\cϩ(ǘleTS<8T+leTS<8T+leT<G8Ҷ{JJeE
ABB%EAcXQBiPhаD#dq W
	m7Yd<re8pP<$dp=osc=\cϩ(c AR/#dU!ny9~T`"TW*(T***ʊJF%EDxh
"8	x(H5ЄkV]Ѫ
	m7A<6eW)㇒.8~8y!aY)hTLT@Ysf>ìcd62KpၙUJ\/<$s+kgD6TPT4,*+"TT&5*JDq P, kפU0nx

m8ʯ S9k$8?7¹
?.sұԁXuyc*.y?c ʩK E0^2RLၛc*,ͱR ,U)`ͱR b G8Ҷ{JJeE
ABB%EAcXQBiPhаD'DGA/  +YW&ҹk#>&:;-uA<D g󖒷ð(3A 
nN&`Eosc=sf>:!fmZ_Q1 ʩ)y03 ʩv<?U"LEcdU%
gG8UI|zLXu1leT)y?U%r~2Kìyc*3RS<gìcdU +G84sYLAcc*k(0 0  BdcdU#]3"ÌleTe3ʊEhQD;MX4z,yavJĹLDq!cI{EVN'j@#S#gK+^&\"?c 7
F ds+kgD6TPT4,*+"TT&5*J@6^  
 Rb\֛e(%MKU<Hq,?.|5][xvfZYu*cϮbq[ucl
MX}(E;J-ssZof?X\oXVVSeφsǟ\Egr@B,M,. v8U\YuXaq\y3t5e"e5虇t&JqUR.hXeK龝TJz</;umz&Ҷ@[⧑Evx4X\T8T+.B5+,.+zz,e"ЮSElrF#$Qb(@Р4E\"9:t^6¸OrVjctnzh5́nZWSnz-tʫ)G㷛r׺fMp'S1۩K˪)ܳo6z^9k宛q37,!rvz3pNҫ+aܗIWҡ۠E;IWҤU(Ee[[ y3t:|	E䥶2Fp#&NW'E1h\CɛгMZ.gleT\8T+#^fE̞V2U]7J}cb`D_1,h D@@@D@ b Cʍ	qz{`c* %ֳ.,?[!B,C!Rp,KnL[h\hL[yHf\X~B,C ņ%	k2bA_AeŇt"1qpKO@
bиИ07A/ѐиQ,2Bb`n_!ThLXS!F``n_/L/:ռʁs0P Ecw+i01G\`b۠bwxASv"w*n!Wrw*naWrڻ7`8vܩ 29Og$@Ȣ5w*n}3#ge$yMSv:Ɩ@lTP*EAR)y?U!I*<,:VgdU!RJ6G8Mx<L ,$Շ҄Smb1*zT1*0U!88FΩu;}*:<I*<E\X\TX\W<&jB)P6kTw*nq_m֜n#]gT>|oll<r˜4y EgbXՇ҄Smb<	ɫ)$M\>(X"FDPvZE!rqenc\[.e'A=cJ\Y[b0V,ЁcfsuoXR.lC.g$?e(9kM4X̤陸\[O,?ŕ#	R{q])AVL&Njs9)mɧkU @`Qgd19g}7+;rcva;z5}cR˚J{c>ӏcո&WbyPf2t,VKleT^z(`V<
okיjs' (ب8T#g	rL,AZ.g%-s)A^:U}$R&06&07	c2cؠ@@Ap-cw+iX(]ʛSv	ڻ7`jT݂öMG(%_R(&E^ZöM؉YuՍ,ب8T,Cuzr^_%9k7Js7\fd?JmXR}mdXUHaL񲢇`Y`IWҹ@?5.dF2Cc*g%MRɓE%%UPMcK팪6UHk&M`]K`Y`IWҹ@?5.g$c$?2FrTU!rdgAJK\ɑsA)/%_Ra`IWҤQgڴ0d! Sl*Ug]M dvڣLA]M@rGgc _Ir;?mQ|"?γγc 5}}Stד7NFk|<zgd2NIx9k	~MDCD03l$Pɯ'UBdpUf$y@?&U	`fI|Q7297¹0VJNҁ\āױ\:YLj&''UJ@Y9iX@,:m/n]gdc_矆m/9c!ǤPɯ'UByͶ=[k.yL5̂בγZ[?5̗Y<}VOEuAV!5̗Y<R3Ǥ	O"?2 Bs
狁BMX}(E;J-smVKHʩc\rM,.*,.+.	5a(XI=[k.y#c*gmIq??եW<&jB)P6klz2]dF6UH=oqaqQaq\x@XIi@ŮbM\uU#;lzK@Ysf>:i{?r\UHnVvi@Yuujy΃<L>բpfw,2Fp#&NT(2 B9Mx<L ,$Շ҄Smb1-Z.g%-R3@Y\X\TX\W<&jB)P6k3ʩ z,M,.*,.+	5a(XKleT劣|-<u1<r3JǟRQgڴ:Ҷ@is)>	O"?2 Bs
狁BMX}(E;J-sjƗ2k@Y)ŅEs&>"k5cKI z,yc*kx4lYq/79+d;^*Z39ktUG7|`AwL~0WZ)b3WMaԭtܭ"CyvtㆬiUw7ng/3=Z3ӳ^$  0_WA<gGьҶt팪Ȣy@6 bY9Mx<L ,$Շ҄Smb1-wL~0\϶2Fq?.sұԁYYuujS|+	5a(XI\O9gWPvZ$Ս.e'28+}HEuYY#;qu6cJ,iUҫ+dvy΃=Xҫ 0D(/gd2B9Mx$Շ҄Smb1&cJ@Y\X\TX\W<\
jB)P6kjW z,:V)ŅEsaa&>"k6U|r
MX}(E;J-smV4Esf>BX]XEcc I=(q1=("ìEqV<4sYB?c I=(q"kdOh4
?γEH}qXue%_JK\]34##U/|$n黥fgoBJ&Q7$Q7(&gc䒯D㮅r*W)㮅uU	IDCB!&&1b]IWҡ0J"?Չw+(Hb]aCR(XrB9LAW Б ?Չw+köQg.rQg?c L2~LLXX?B)J EnpEYt:IWԁ< mtЊ:2I2	G	a HL'	eXH(
1YUӮSE=[*3!&'#?QC t̄<Ui:fBMxOp̀2I2k|/&D3Ec?y@U	5>i003Ui:fBM]:
a|*gZN^)ၘ2I2m*'S#UӨ ?:)\7w_XIWҬiB)S<Y 8iWN+^8#g(E;m.nsJNU	4	γ6I*TqI*W)lUpiB),?iy$\$\?issPv?:nJNҫ+aK҄S(Үr_Q=cKӵ^\攲K҄SXct{u\c!*3!&'S&GgL>	^*2,g=[dZN^y2 ʭ'LI	4H42 ʭ'LI	484G`_^"γ*3!&'SaM"VQ`_XK`_ eVd$ג	4i`X_\O1#<8ʯ z,28+}HEagX6%ΰ/U(E;g?y_6ҮA$X͟oqsF)?FyJuGhZvAagU}*"6U(E;eVd$8&?ΰ,-JNBcɤL,
U(E;ĶU(E;/iIϞS 4U(E;E1id}*G`XYJdY%_JnG\攜i{3USissRs?γF dIϚUqel;issRsEuB,20&xpHissPw=o @U	5>#dZN^y"iB)SissPwʭ'LI	@!`X[dZN^)"2ZN^	484Ui:fBMx D'"Ea`X_\CZz)j_U2xYgW,/}Q`X_Xuav-agW<Fk:`^zoWҽ*,/}Q`XY0,-voAiKR#.nsJN`X[SIWҹLSIWҸ~)I`X\B .\Y[i&"3u龆_J\}zZ`_gt;}c2aYdZN^	CHEgx ?m*):սXLC
纽T"Q!7¹jM@Xu\*tv'ȴWVu6[+t1ceE89k^_U///p&6*(8N@`ӐvZu1^qkva醯D}C9k^_U///p&6H`du mciE;J-s::zvaկ)هcU\ꮽbceEoe7A<Xm!vps/^?o7K]ʊ$02:1^B#f؆aqvXc8QDY[{uR{DLV!6TQ!v'uR]37J6kt^-sbCqUӪP6krysVvX&WyiهbmU."nU؇QbG62ERf;pO.>][b=[_ c*]V J#[)ҮR@q0:ն!pN&Tz?V?Tz dU؇WN@ Eg.rxv8;i(XrQg.r](9k"?Չw+mC֤Qc՜<gep 6TPv{J0&4*(2+u,Yz$ʊ$46TQ(9k½\rP 
E=[ Q@9jAYI*HM-h2](9k6UIrdsyWJZ~MR\q0D#`X[`mlЛc* #D4Yg%k0,,-8y([)EagYuYuՍ,QBQb큵VpP6,c.n\O?XrCRDCI*UVJNҁ\gV4[[)z,1ۋ_ Uŕ;?d tiY.Edk";?WJK\yM42IWҹLgdPɎ	s WJKPM42IWҤr$@ vj%UPL8L,4\R]%_J É̢i{?mUtJmQU]).rBafQg)yQAM;]No^q]3t8=Y.4 +;qU/1Ug.5A&@%ޟcϥiw)nOt1[עtgkSL#gu,:'sT}3jqmu׊g.0ꥬ?M5wR\U]DC[5׉uTg}r]t.f>prwU(ECYƯUtJӛIӛRJ	PL9IWҤQg]M edN>E8@Xvy3t:|	GVY/w%ޞ#P}]FVfz,9M>u^j^0]Sk^y{jE (Q1!9ۓ7Y?9@&MkE{շ&*?,UŭP]mI*&9@A2(c!K>,?愦W<&jB)P6k}GSv06(.]MM[U^>vpw.xE\cϩ(1mdPɀy:" }cW流w5G:Q?TTcJ_\2֬Gs7Zw
N:W}I`h@l`	g7I,k䂘rהY/bYG״M48~6'\+ٙܵܩ®5
§E:ռE@A̺,jY@?3ɓ2f1e(n53TM4Sp+s{ͬG)J	&EBUg(*g7IgTM5@imUpfgr Td\?
5
ΆSȢ,@@P(lTE1<?r\x@XIi@Ůb[k%MTיMˌ7֙'sT}3jK&	^YxXu&XדxEsf>gWU^^or^rA<ŀ/HU>0T}cR˚M4]J;^]K.i3uR'UMDCTr^*jsyk%~L j&&EsC OrYs]Tuzj&NfyauTgd	O<L>բ.`YsCkV#
n|/VybuTds0x4L@G)h]WDC@	|ד/ &%A$pXDrlzDC@]W"5 5r8$D@j& 5y/is$u}rk_Hy: z x4L@G)h 5r:A  &E\CɛгMZ/"\Y!ݵT(ږS FP!y"9jJKm\I*&9@A2(23Ys
MX}(E;J-sY/ᛥ!?28+}HEvgwCN0\g1&׉uTgӌ/.4ד7A=DCT꣫r]锄al;ʊ
eԲ,gdU!sleT-`_dU#]3eE"V4[[)dUHJc*5/UҒ*WkM%̥%U?Z[?3c!UҒ*W(ד<?Ս.e'gis 1U#9*mWJK]M42IWҧ:ilV4[[)dUHJc*5UҒ*WkM%̥%Uγ?u*??γ2is)>aLၙUHϜcU̞G#fn]VKR&Osu78nד
&?%USdՔd?BTsՒgu#"*T,ydJ)y9Mx<L ,$Շ҄Smb1"f2jD2tzL˹~wSs9g\X\TX\W<&jB)P6ksՒ=sf>i{?o1leT
gGgU!EuUHaLhQCȳmXR}mlzƗ31U#9*mH.pH"z,V9cKI\HHleT䩶2C[dJ @`γ?α1j%UaLWJK\C3piUM8y(YARy3R/Qg`ml[yc*'S<9yAv c*]b3Sl2 B)Uqelq1leT
gG8M6EY(SjB)P6k?^Zc*,lUx9kI[ո^ZȢ6	*TD#gWPvZ$fr׶	*@Y)PvZ$fr׶	*@Y)l0r%)z5S^fsum=U9k^ZV03s꣡u7΁Gzuo}z:n/[:.tSem`?7¹fZİ6&]<3e流p3U8ע|x_)هlM80'u_oU/Y6C z,3JǟRQgcJyL*IsgdU%^ysjƕ])NXҫ)Hʩ,z,:iU}ml{V4Jw^ZEeԲVo2^ysjƕ]'gcJkd9U)EXjjƕ]'gcJkd=gdU*v<q팪2n?γեUHkysRx-ӳ6wӫYY)K)"2TmgVeT?XʩS)RKleTg`md,Y)Kmc*LY)Igjƕ]'gcJkm6R]%_J?n,iUҫ+aV4>YuYuYjlڳg]M%iUŕ9yAv c*][)(2PՇ҄Smb29	*6UI\?lY$r֒5S)p3U6	*E1lUx9kI[G8M,.*,.+	5a(XHUlUx9kS|+	5a(XHUlUx9kS|+N&`KRnjTzr׶	*怜`fGC:n/[a:U3p."et^:u]|=os)`lMOyfU/Vfq1D9k;03_S؛paOZ310^mʇ@Ysf>jƕ])NU|62KpՍ*R3ڱWJS}RXYuXҫLiUҔ$?	*?˩et+gdU)pՍ*Ojƕ]'r2R:?ΰ,/եՍ*Ojƕ]'^<z,:62T)y?U*e05gK32aLc*5Z?fmZ ϓW?γ6RSEeTU*"XʩS19RSmc*Lʩ"JYM6REYUJM6R,:iU}ml{V4>ʩXʩSj%UF bƕ]*cJkEYuYuXPmʪ"\	ʩAq7Y"WVðdJ,Xr(XrEĻ J2*I*'0Rt0eVd$ ("	@@N,&P2 eVQ`
g<Ui%V XOG#g)l0r%rygW|2P*0Ggήu_f'z΁*9g)l0r%޳J>zyx@Yosʊ$#"#=9iX@,:2I(ʰ	}3ɞG* ,'S<H9? ?Tz t̄<Ui%V&'aHׂ?c J2MxOHsg}uKS|+N&`K,ήdU|`7b3YΫ:ܨxEW=LXGYz*)"Q?˜4y Eg 88 9KSlI\?mVQ`hEYu1ۋV?B )QA.)32*(2;<q7E%iUŕE@t8"?c!Ui%V POy3ၙ eVQ`
gG#gdOm*(2;*?nItv.Ȣ: 8$D@kT            1  h:{V9:0           1      ./usr/lpp/csd/sysctl/removevsd e                             #! /usr/lpp/ssp/perl/bin/perl  
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1994,2000 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#  
#"@(#)27   1.12.1.1   src/csd/sysctl/removevsd, vsd, csd_rmoh, rmohs04a 9/26/00 13:23:53"
#####################################################################
#
# Module:  removevsd
#
#-------------------------------------------------------------------#
#                                                                   #
# Description: 
#     
# This command is to use a single command to remove a set of logical volumes
# and vsds on given nodes. Basically it combines the ucfgvsd, rmlv, undefvsd,
# and reducevg commands together.
#
#       
# Inputs:
#        -f      force as much work done as possible.  This includes
#                unconfiguring the vsds if necessary.
#        -v      specify the vsd_names
#        -a      all vsds defined in SDR
#        -L      internal lock used by removehsd
#
#
#
# Outputs: 
#        uncfgvsd if -f option is specified
#        delete LV on server node
#        undefine vsds in SDR
#
#
#       Returns:
#           0 - if completed successfully 
#           1 - if bad command line or bad SDR return
#                                                   
# Syntax:
#       removevsd [-f] [-L] {-a | -v vsd_name[,vsd_name]}
#
# External Ref:                                  
#       sp_msg                                  
#       SDRGetObjects                         
#                                            
# Internal Ref:                             
#       none                               
#                                         
#####################################################################

$MSGCAT="/usr/lib/nls/msg/\?/vsd.cat";
$SPMSG = "/usr/lpp/csd/bin/spmsg_csd";
$progname = "removevsd";
$FAN_OUT=128;
$TIMEOUT = 28800;

sub myHandler {
    $|=1;
    `rm -rf /usr/lpp/csd/sysctl/lock`;
}

# sysctl signal handler handles HUP, INT, QUIT, and TERM
$SIG{'HUP'} = 'myHandler';      # 1
$SIG{'INT'} = 'myHandler';      # 2
$SIG{'QUIT'} = 'myHandler';     # 3
$SIG{'TRAP'} = 'myHandler';     # 5
$SIG{'ABRT'} = 'myHandler';     # 6
$SIG{'KILL'} = 'myHandler';     # 9
$SIG{'TERM'} = 'myHandler';     # 15

system ("sysctl sysctl_vsdcheck");
$rc = $?;
if ($rc != 0) {
        system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG47 '%s: 0034-647 sysctl sysctl_vsdcheck failed\n' $progname ";
        system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSGCHK '\tPlease check your sysctl authorization.\n' ";
	exit (($rc < 256) ? $rc : $rc/256);
}

$save_arguments = "";
foreach $arg (@ARGV) {
    $save_arguments = $save_arguments . ' ' . $arg;
}

$sp_name = "";
$sp_name = $ENV{'SP_NAME'};
if ( $sp_name ne "") {
    $cmd = "sysctl -f $FAN_OUT -T $TIMEOUT sysctl_removevsd2 -P $sp_name $save_arguments";
}
else {
    $cmd = "sysctl -f $FAN_OUT -T $TIMEOUT sysctl_removevsd2 $save_arguments";
}
$exit_error = 0;
    open (OUTPUT, "$cmd | ") || die "cannot open OUTPUT from $progname";
    while (<OUTPUT>) {
        split(/s+/);
        print "$_";
        if ($_ =~ /removevsd: failure/) {
            $exit_error = 1;
        }
        elsif ($_ =~ /Remote operation timed-out/) {
            `rm -rf /usr/lpp/csd/sysctl/lock`;
            $exit_error = 1;
        }
    }
    close(OUTPUT);
if ($exit_error == 1) {
    exit 1;
}
else {
    exit 0;
}
u#"*kp ?           /O  h:Җ:Җ:0           /O      ./usr/lpp/csd/sysctl/removevsd2.perl                                 #! /usr/lpp/ssp/perl5/bin/perl 
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1994,2001 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#####################################################################
#
# Module:  removevsd2.perl
#
#-------------------------------------------------------------------#
#                                                                   #
# Description: 
#     
# This command is to use a single command to remove a set of logical volumes
# and vsds on given nodes. Basically it combines the ucfgvsd, rmlv, undefvsd,
# and reducevg commands together. 
#
# Inputs:
#        -f      force as much work done as possible.  This includes
#                unconfiguring the vsds if necessary.
#        -v      specify the vsd_names
#        -a      all vsds defined in SDR
#        -L      internal lock used by removehsd
#
#
#
# Outputs: 
#        uncfgvsd if -f option is specified
#        delete LV on server node
#        undefine vsds in SDR
#
#
#       Returns:
#           0 - if completed successfully 
#           1 - if bad command line or bad SDR return
#                                                   
# Syntax:
#       removevsd [-f] [-L] {-a | -v vsd_name[,vsd_name]}
#
# External Ref:                                  
#       sp_msg                                  
#       SDRGetObjects                         
#                                            
# Internal Ref:                             
#       none                               
#                                         
#####################################################################
#"@(#)32   1.24.1.3   src/csd/sysctl/removevsd2.perl, vsd, csd_rmoh, rmohs07a 2/14/01 13:41:22"

# required imported function
require "getopts.pl" ;

$| = 1; # turn off buffering; msg cat stuff causes output scrambling otherwise
$MSGCAT="/usr/lib/nls/msg/\?/vsd.cat";
$SPMSG="/usr/lpp/csd/bin/spmsg_csd";

$MSGCAT2="/usr/lib/nls/msg/\?/vsdcmi.cat";
$SPMSG2 = "/usr/lpp/csd/bin/spmsg_vsdcmi";

#
$SDR_PATH="/usr/lpp/ssp/bin";
$VSD_Data_Dir="/usr/lpp/csd/vsdfiles";
$VSD_Bin_Dir="/usr/lpp/csd/bin";
$SYS_Bin_Dir="/usr/lpp/ssp/bin";
$VSD_ipaddr_file="/usr/lpp/csd/vsdfiles/VSD_ipaddr";
 
$SDRFenceFile="SDRVSDFenceFile";
$FenceFileIn="/usr/lpp/csd/vsdfiles/RemovevsdSDRFenceIn";
$SDRERRFileNotFound=62;

$Warnfile = "/usr/lpp/csd/vsdfiles/removevsd.log";
$WarningsLogged = "false";
$Date = `date \"+%D %T\"`;
chop($Date);
# trim the Warnfile if it is too large
$numline = `cat $Warnfile 2>/dev/null | wc -l`;
if ( $numline > 500 )
{ `tail -250 $Warnfile > $Warnfile.$$`;
  `mv $Warnfile.$$ $Warnfile`;
} 

$USAGE="Usage: removevsd [-f] {-a | -v vsd_name[,vsd_name]}";

$progname = "removevsd";
$FAN_OUT=128;
$TIMEOUT = 28800;
sub print_usage {
    system "$SPMSG VSDSYSCTLINF $MSGCAT VSDSYSCTLINF03 '$USAGE\n' ";
}


if ($ARGV[0] eq "-P") {
    shift(@ARGV);
    $sp_name = $ARGV[0];
    shift(@ARGV);
    $ENV{'SP_NAME'} = $sp_name;
}

########################################################################
#
# Check for usage needed
#
########################################################################
if ($ARGV[0] eq "" || $ARGV[0] eq "-h") {
    &print_usage;
    if  ("-h" eq $ARGV[0]) {
       exit 0;
    }
    exit 1;
}

# This command can only be envoked on the Control Work Station(CWS)
$my_node_number = `/usr/lpp/ssp/install/bin/node_number`;
chop($my_node_number);
if ($my_node_number != 0) {
    system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG03 '%1\$s:  0034-603 This program can be  envoked on the control work station only.\n' $progname  ";
    exit 1;
}


########################################################################
#
# Validate nodes specified
#
########################################################################


foreach $arg (@ARGV) {
    $save_arguments = $save_arguments . ' ' . $arg;
}

# default is need_lock
# if we are envoked by createhsd, we don't need to check lock
$need_lock = 1;
# The (undocumented) "-H" is to indicate removevsd is 
# being called by removehsd.
&Getopts('afHLv:');

if (($opt_v ne "") && ($opt_a ne "")) {
    system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG04 '%1\$s:  0034-604  Cannot specify both %2$s and %3$s option.\n' $progname \"-v\" \"-a\"  ";
    print "$USAGE \n";
    &error_exit();
}
if (($opt_v eq "") && ($opt_a eq "")) {
    system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG05 '%1\$s:  0034-605  Must specify either %2$s or %3$s option.\n' $progname \"-v\" \"-a\"  ";
    print "$USAGE \n";
    &error_exit();
}

# we need to check and set lock before looking at the SDR info 
$LOCK="/usr/lpp/csd/sysctl/lock";
if ($opt_L ne "") {
    $need_lock = 0;
}

if ($need_lock == 1) {
    `mkdir $LOCK >/dev/null 2>&1 `;                
    while ($? != 0) {
        $count = $count +1;
        if ($count > 7) {
            system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG28 '%1\$s:  0034-628 The lock directory %2$s is held by someone else. Try again later.\n' ${progname} $LOCK ";
    #       last;     # exit from the while loop 
            exit 1;
        }
        `sleep 1`;
        `mkdir $LOCK >/dev/null 2>&1`;
    }
}


# parse the argument we need to create a list of arrays and lists
# vgNames on all nodes, and lv_names on all nodes
# since we use same argument and algorithm as the clien program
# we should have same names in program
# also these name will be used in this program to do vsdvg and defvsd
# output are:
#
#
&vsd_list();

# Ensure no VSD's are removed if they are part of a defined HSD.
# Inform the user to remove them with removehsd.
&hsd_check();

# BODY
# pass ucfgvsd command to all vsd nodes in parallel 
# so we need to make a vsd node list
# if this node is alive, we send sysctl_lsucfgvsd command to do lsvsd 1st
# if original argument specify -f option we will uncfgit
# if original argument does not specify -f option we will get error
# if given vsds on all nodes are ucfged, we will undefine vsds in SDR
# if vsds are undefined, we will run delete LV on the server node

open(WARNLOG, ">>$Warnfile") || die "cannot open $Warnfile file";

$cmd = "$SDR_PATH/SDRGetObjects Node node_number VSD_adapter reliable_hostname | ";
if ( ! open(NODES, $cmd ) ) {
        # die "Can't get Node Objects from SDR";
        $rc = $! + 0;
        if ( $rc >= 256 ) { $rc = $rc / 256; }
            system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG01 '%1\$s:  0034-601  %2\$s failed.\n' $progname \"$cmd\"  ";
        exit $rc;
}

$junk = <NODES>;  # skip SDR header
while(<NODES>) {
    s/^\s*//;
    ($node_number, $ipaddr, $reliable_hostname) = split(/\s+/);
    if ($ipaddr ne '""') 
    { 
      if ( $reliable_hostname eq '""' )
      { system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG09 '%1\$s:  0034-609  Cannot find host name in SDR for node %2$s.\n' $progname $node_number  ";
        &error_exit();
      }

      # it is better to check if we can run sysctl commands on the nodes
      $cmd = "sysctl -h $reliable_hostname sysctl_vsdcheck";
      system ($cmd);
      if ($? != 0)
      { system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG01 '%1\$s:  0034-601  %2\$s failed.\n' $progname \"$cmd\"  ";
        print "           Please check your Kerberos/sysctl Authorization on $reliable_hostname.\n";

        $Msg = system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG01 '%1\$s:  0034-601  %2 \$s failed.\n' $progname \"$cmd\"  ";

        print WARNLOG "$Date FAIL:$node_number:$cmd:No removevsd actions were done on this node.\n"; 
        $WarningsLogged = "true";
        if ($opt_f eq "")
        { &error_exit();
        }
      }
      else
      { push (@node_list, $node_number);
        push(@node_name_table, $reliable_hostname);
        $run_node_list = $run_node_list . " -h $reliable_hostname";
      }
    }
}
close NODES;

# make up node name list for sysctl
# after the sysctl call, we parse the output to put into LOG file
# this will be 2 sysctl calls one for mkvg; one for mklv

   
# $save_arguments = "{ $save_arguments }";
$save_arguments = " $save_arguments ";
print "removevsd: calls sysctl_lsucfgvsd.\n";
$cmd = "sysctl -f $FAN_OUT -T $TIMEOUT $run_node_list sysctl_lsucfgvsd $save_arguments";
$time_0 = time();
open(LSUCFGOUT, "$cmd | ") || die "cannot set LSUCFGOUT";
$failed = 0;
$fail_rec = "";
while (<LSUCFGOUT>) {
    s/^\s*//;
    ($delimeter, $node_name) = split(/\s+/);
    if ($delimeter eq ">>") {
        $current_node = $node_name;
    }
    if ($delimeter =~ /OK/) {
        chop($delimeter);
    }
    if ($delimeter =~ /FAIL/) {
        $failed = 1;
        chop($_);
        push(@fail_list, $_);
    }
}
close(LSUCFGOUT);

if ($failed == 1) {
    foreach $fail_rec (@fail_list) {
        print "$fail_rec\n";
        print WARNLOG "$Date $fail_rec\n";
    }
    $WarningsLogged = "true";
    &error_exit();
}


$time_1 = time();
&display_time_delta($time_0, $time_1);
   

print "removevsd: calls sysctl_dellv.\n";
$cmd = "sysctl -f $FAN_OUT -T $TIMEOUT $run_node_list sysctl_dellv $save_arguments";
$time_0 = time();
open(DELLVOUT, "$cmd | ") || die "cannot set DELLVOUT";
$failed = 0;
$fail_rec = "";
$have_emptyvg = 0;
while (<DELLVOUT>) {
    s/^\s*//;
    ($delimeter, $node_name) = split(/\s+/);
    if ($delimeter eq ">>") {
        $current_node = $node_name;
    }
    if ($delimeter =~ /OK/) {
        chop($delimeter);
        print "$delimeter \n";
    }
    if ($delimeter =~ /FAIL/) {
        $failed = 1;
        chop($_);
        print "$_\n";
        print WARNLOG "$Date $_\n";
    }
    if ($delimeter =~ /EMPTY_GVG/) {
        # the return string will be "EMPTY_GVG: gvgname"
        # since we split it with blank, so $node_name actually is gvgname
        $have_emptyvg = 1;
        chop($_);
        print "$_\n";
        push(@emptyvg_table, $node_name);
        $emptyvg = $emptyvg . " $node_name";
    }
}
close(DELLVOUT);
if ($failed == 1) 
{ $WarningsLogged = "true";
  if ($opt_f eq "") # exit if not forcing are way thru
  { &error_exit();
  }
}

$time_1 = time();
&display_time_delta($time_0, $time_1);

print "removevsd: calls undefvsd.\n";
$time_0 = time();
# next we will run undefvsd to update VSD_Table
if ($opt_v eq "") # undefine ALL vsds
{ if ($fencedVSDs ne "")
  { $rc = system("$VSD_Bin_Dir/vsdDeleteSDRFence ALL") >> 8;
    if ($rc != 0)
    { print "FAIL:$my_node_number: Deleting Fence Map\n";
      print WARNLOG "$Date FAIL:$my_node_number: Deleting Fence Map\n";
      $WarningsLogged = "true";
      &error_exit();
    }    
  }
  system "$SDR_PATH/SDRDeleteObjects VSD_Table";
  if ($? != 0) 
  { print "FAIL:$my_node_number: undefvsd -a\n";
    print WARNLOG "$Date FAIL:$my_node_number: undefvsd -a\n";
    $WarningsLogged = "true";
    &error_exit();
  }
  else 
  { system "$SDR_PATH/SDRDeleteObjects VSD_Minor_Number";
    if ($? != 0) 
    { print "FAIL:$my_node_number: undefvsd minor table -a\n";
      print WARNLOG "$Date FAIL:$my_node_number: undefvsd minor table -a\n";
      $WarningsLogged = "true";
      &error_exit();
    }
    else 
    { print "OK:$my_node_number: undefvsd -a\n";
    }
  }
}
else  # undefine specific vsds
{ foreach $vsd_minor_entry (@vsd_minor_table) 
  { ($vsd_name, $minor) = split(/\s+/, $vsd_minor_entry);
    if (defined( $fencedVSDs{$minor} ))
    { $rc = system("$VSD_Bin_Dir/vsdDeleteSDRFence $minor") >> 8;
      if ($rc != 0)
      { system "$SPMSG2 undefvsd $MSGCAT2 EMSG040 'undefvsd: 0021-040 Deletion of Fencemap for vsd %1\$s from  VSD_Fence in the SDR failed with return code %2\$d.\n VSD %3\$s is not undefined.\n' $vsd_name $rc $vsd_name 1>&2";
        print "FAIL:$my_node_number: undefvsd $vsd_name\n";
        print WARNLOG "$Date FAIL:$my_node_number: undefvsd $vsd_name\n";
        $WarningsLogged = "true";
        &error_exit();
      }
    }
    system "$SDR_PATH/SDRDeleteObjects VSD_Table VSD_name==$vsd_name";
    if ($? != 0) 
    { print "FAIL:$my_node_number: undefvsd $vsd_name\n";
      print WARNLOG "$Date FAIL:$my_node_number: undefvsd $vsd_name\n";
      $WarningsLogged = "true";
      &error_exit();
    }
    else 
    { system "$SDR_PATH/SDRDeleteObjects VSD_Minor_Number minor_number==$minor";
      if ($? != 0) 
      { print "FAIL:$my_node_number: undefvsd wth minor number $minor\n";
        print WARNLOG "$Date FAIL:$my_node_number: undefvsd wth minor number $minor\n";
        $WarningsLogged = "true";
        &error_exit();
      }
      else 
      { print "OK:$my_node_number: undefvsd $vsd_name\n";
      }
    }
  }
}
$time_1 = time();
&display_time_delta($time_0, $time_1);

# next we will call vsd nodes to do rmdefvsddevs
# we had dsh (hang) problem in /usr/lpp/csd/bin/undefvsd
# even we have called sysctl_vsdcheck, it is better to check the node again
# to make sure dsh will not hang
# actually we don't care if rmdefvsddevs run or not on ALL nodes
# since some nodes may be down
#
#
$rmdev_node_list = "";
foreach $node_name (@node_name_table) {
    system "ping -c 1 $node_name > /dev/null";
    $node_name =~ s/\s+//;
    if ($? == 0) {
        if ($rmdev_node_list eq "") {
            $rmdev_node_list = $node_name;
        }
        else {
            $rmdev_node_list = "$rmdev_node_list,$node_name"
        }
    }
}

print "removevsd: calls rmundefvsddevs.\n";
$undefvsd_lst = "";
$num_undefvsd = 0;
$time_0 = time();
foreach $vsd (@vsd_table) {
     $undefvsd_lst = "$undefvsd_lst $vsd";
     $num_undefvsd = $num_undefvsd + 1;
     if ($num_undefvsd == 100) {
         $cmd = "/usr/lpp/csd/bin/rmundefvsddevs $undefvsd_lst";
         system("/usr/lpp/ssp/bin/dsh -w $rmdev_node_list $cmd");
             print "CALL:$my_node_number:$cmd \n";
             $num_undefvsd = 0;
             $undefvsd_lst = "";
     }
}
#  0 < $num_undefvsd < 100
if ($num_undefvsd >0) {
    $cmd = "/usr/lpp/csd/bin/rmundefvsddevs $undefvsd_lst";
    system("/usr/lpp/ssp/bin/dsh -w $rmdev_node_list $cmd");
    print "CALL:$my_node_number:$cmd \n";
}
$time_1 = time();
&display_time_delta($time_0, $time_1);


# next we will remove VG on the server node if the VG is empty
if ($have_emptyvg == 1) {
    print "removevsd: calls sysctl_dodelvg.\n";
    $time_0 = time();
    $cmd = "sysctl -f $FAN_OUT -T $TIMEOUT $run_node_list sysctl_delvg $emptyvg";
    open(DELVGOUT, "$cmd | ") || die "cannot set DELVGOUT";
    $failed = 0;
    $fail_rec = "";
    while (<DELVGOUT>) {
        s/^\s*//;
        ($delimeter, $node_name) = split(/\s+/);
        if ($delimeter eq ">>") {
            $current_node = $node_name;
        }
        if ($delimeter =~ /OK/) {
            chop($delimeter);
            print "$_";
        }
        if ($delimeter =~ /FAIL/) {
            $failed = 1;
            chop($_);
            $fail_rec = $fail_rec . ";$_";
            print WARNLOG "$Date $_\n";
            $WarningsLogged = "true";
        }
    }
    close(DELVGOUT);
    if ($failed == 1) {
        @fail_list = split(/;/, $fail_rec);
        foreach $tfail_rec (@fail_list) {
            print "$tfail_rec\n";
        }
        if ($opt_f eq "") # exit if not forcing are way thru
        { &error_exit();
        }
    }
    $time_1 = time();
    &display_time_delta($time_0, $time_1);
}

# next we will delete vsdvg if a vg is empty
if ($have_emptyvg == 1) {
    print "removevsd: calls delvg\n";
    $time_0 = time();
    foreach $vsdvg_item (@emptyvg_table) {
        $cmd = "vsdelvg $vsdvg_item";
        system ("/usr/lpp/csd/bin/vsdelvg $vsdvg_item 2>&1");
        if ($? != 0) 
        { system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG01 '%1\$s:  0034-601 %2\$s failed.\n' $progname \"$cmd\"  ";
          print WARNLOG "$Date FAIL:$my_node_number:$cmd\n";
          $WarningsLogged = "true";
          if ($opt_f eq "") # exit if not forcing are way thru
          { &error_exit();
          }
        }
        else 
        { print "OK:$my_node_number:$cmd\n";
        }
    }
    $time_1 = time();
    &display_time_delta($time_0, $time_1);
}

if ( $WarningsLogged eq "true" )
{ print "Failures were logged in $Warnfile \n";
}
close(WARNLOG);
#end of BODY


if ($need_lock == 1) {
    if (-d $LOCK) {
        `rm -fr $LOCK`;
    }
}
exit 0;

sub error_exit {
    if ($need_lock == 1) {
        if (-d $LOCK) {
            `rm -fr $LOCK`;
        }
    }
    print "removevsd: failure\n";
    if ( $WarningsLogged eq "true" )
    { print "Failures were logged in $Warnfile \n";
    }
    exit 1;
}

sub hsd_check
{ # If removevsd is called by removehsd, return 0.
  if ($opt_H ne "")
  { return 0;
  }

  # Check if any of the VSD's are part of an HSD.
  foreach $vsd_minor_entry (@vsd_minor_table)
  { ($vsd_name, $minor) = split(/\s+/, $vsd_minor_entry);
    `$SDR_PATH/SDRGetObjects HSD_Table VSD_name==$vsd_name > /dev/null 2>&1`;
    if ($? eq 0)
    { system "$SPMSG VSDSYSCTLMSG $MSGCAT VSDSYSCTLMSG54 'removevsd :  0034-654 You have specified a VSD name (%1\$s) that is part of an HSD. Use removehsd to remove the HSD and all underlying VSDs.\n' $vsd_name ";
      &error_exit();
    }
  }
  return 0;
}

sub vsd_list {
  ##############################################################################
  # Read either the the SDRFenceFile or the VSD_Fence class
  ##############################################################################
  $rc=system("$SDR_PATH/SDRListClasses | /usr/bin/grep VSD_Fence 1>/dev/null 2>/dev/null");
  if ($rc == 0)
  { open(VSDFENCE, "$SDR_PATH/SDRGetObjects VSD_Fence | tail -n +2 | ") || die "Can't get VSD_Fence from SDR";
  }
  else
  { $rc=system("$SDR_PATH/SDRRetrieveFile $SDRFenceFile $FenceFileIn 1>/dev/null 2>/dev/null");
    $rc = $rc/256;
    if ($rc == $SDRERRFileNotFound)
    { system("/usr/bin/touch $FenceFileIn");
    }
    else
    { if ($rc != 0)
      { system "$SPMSG VSDMSGS $MSGCAT EMSG136 '%1\$s: 0034-136 can not execute %2\$s.\n' $progname 'SDRRetrieveFile $SDRFenceFile $FenceFileIn'" ;
        exit($rc);
      }
    }
    if (!open(VSDFENCE,"$FenceFileIn"))
    { system "$SPMSG VSDMSGS $MSGCAT EMSG001 '%1\$s: 0034-001 Cannot open or access file %2\$s.\n' $progname $FenceFileIn" ;
      system("/usr/bin/rm -f $FenceFileIn");
      exit(1);
    }
  }
  while (<VSDFENCE>)
  { s/^\s*//;
    ($minor_number, $commit, $Map) = split(/\s+/);
    if ($commit == 1) 
    { $fencedVSDs{$minor_number} = $minor_number;
    }
  }
  close(VSDFENCE);
  system("/usr/bin/rm -f $FenceFileIn");

   open (VSDTAB, "$SDR_PATH/SDRGetObjects VSD_Table VSD_name minor_number global_group_name | tail -n +2 |") || die "Cannot open VSDTAB";
    while (<VSDTAB>) {
        s/^\s*//;
        push(@VSD_Table, $_);
    }

    if ($opt_v ne "") {
        @vsd_table = split(/,/, $opt_v);
        foreach $vsd (@vsd_table) {
            $vsd_defined = 0;
            foreach $vsd_table_entry(@VSD_Table) {
                s/^\s*//;
                ($vsdname, $vsdminor, $vsdgvgname) =
                                       split(/\s+/, $vsd_table_entry);
                if ($vsd eq $vsdname) {
                   
                    $vsd_defined = 1;
                    $vsd_minor_item = "$vsdname $vsdminor";
                    push(@vsd_minor_table, $vsd_minor_item);
                    last;
                }
            }    
            if ($vsd_defined == 0) {
                system "$SPMSG2 undefvsd $MSGCAT2 EMSG014 'removevsd :  0021-014 You have specified a VSD name %1\$s, that does not exist.\n' $vsd ";
                &error_exit();
            }
        }
    }
    else {
        foreach $vsd_table_entry (@VSD_Table) {
            s/^\s*//;
            ($vsdname, $vsdminor, $vsdgvgname) =
                                   split(/\s+/, $vsd_table_entry);
            $vsd_minor_item = "$vsdname $vsdminor";
            push(@vsd_minor_table, $vsd_minor_item);
        }
    }    
}

sub display_time_delta {
    local ($tsec, $tminute);

    $tsec = $_[1] - $_[0];
    if ($tsec > 60) {
        $tminute = $tsec / 60;
        printf ("It took about %6.2f minutes.\n", $tminute);
    }
    else {
        if ( $tsec > 0 ) {
            print "It took about $tsec seconds.\n";
        }
    }
}
el6 $           @  h:d::0           &      ./usr/lpp/csd/sysctl/updatevsdtab2.perl                                  #
$einst";S_acdlmopr()-/0:=ACDGMPRTV\bfghuv	',.123EILNOy{}%&46?@BHUY[]`qxz+57>jkw|!*8<F~W^KXZ9A ˎ ]dLu*dаuAEU6P͡9SZzȪKVK".Xl;}~$gHZvK3L~e܋?o}Jʋ.7αvkVMfpb*Jq3.S2v    $HＣ,椁i"8˶.ͨθ:vҮzŌԐ!1:D2]jɹ%EniWdbx_.Lc:U՗Jq0an*dаuDK*l}ﴁclp'8<8?:
zA-XXsuף
hCwZmVH#	IwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvyDIhajǄǏ<xǏ<xǏ<xǏ<xǏ<xǏ<xǏ<xǏ<xѢɹm([mɹuC.8EB_ ʕ?
f=zYv"~S:1@_6Yt1,"	]
A5(YSkf;gPo(YVܬYQQ;:qӌƱc%׍(},{#m2v,ơc['gޠP8Պ:1Uc³YQхfQÃ8.8͵]B8@}/H)X5D/Z4U
Aei/"i':٬j'jەowwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwo󭢬;)EEGVZ}ݽD{qN#?Z҂L(\G8e6(&*PRsPSbbN0bUc1[taYB³Yao.c|]e"τN3I70LUS%rzDQ
Q4{aBJ&Tt2<BlЃT@@(].RMPɅ"qJd(T@%M(l@DQ	BQH9uoL(\C'A ˎ^=)QI$PRIA ̏4 :
 .RMPɅH*:A  zS!GW	&[A5OI-XXIl
.p D#'<Ch,&QfQ(hoYCEM80EJf^*+9Qd7#4\@GOI,4\@GOHzc㲝UEEE7#ԇKOCEGc%\oeŚG]#TLHѡcGfo%\=72ʡOT+W5ۢ<_o}X `JP"+֚u۝]m@iU&"2IG`>Dv0>  Sb֔2aBK(o0r$C0yP"  <6;qJ/\u^4XQ'gqنpqMfu8eAč4vi&p2y݈Mշ+@KMrnVCl;Mh6UG'*BzI?Z҂L(\G8e6(aB(\Cb9(PC
"`/"DD<D^Ey*@);
mY70㭠G:gRΤ=czI㲝UEEE7x vS*P$hбI7)*ut24lr:I|lr$AzV-iAC&.#P
0~.T⅔Tءa`/"DD<DVۯG"盪 v֛D)dÎ3k5C:u!Υ&;uUAWJoqNG,9BBƎ$xܪI!h¬ʕh2x6UF8ro|Yqg8aA5@&*,hj,x<'P<sVk5괙0/Hv{Nmm8aA52f8
qBjc ;@@o]nh-UR^27nUVcoܪHv0ұkJ
0q⅔Tء0r,=B(\'	y"  rnxBMR 㭠G:^oUQQdMu|qBʃ)4,hM
J]7ef?*|㤺ˡC8ܪ]e!ab֔2aB9(PC
aBJ(Y@zMP	y"  7$DA$@l0%*{nVM3k5U[Mw*,) 㲝t(YPr1#FI!IWq}t+MhCƂхY*;롊OT2|Xdb(lABƋƢǀZcaL⅕6cPY'tc@geTfQ	i-t-6q	$;xX/Jŭ((dsPSb/0r,=B(\@C	y" QxahcuG>)vauYGF4_')e:P
bF;4BⅶܬܪC6U[]e!x_mrxJ 1UL6 cEQcDW10qBʗe2DU.h2UqYIh4taZolхj.CxqWCmG&taZ!=",0e:Jt;4x_^ZPPɅk..THȂ &, A *D뱝sYt1v;HfY]T8mcdÎ3k5$;)H⅕(S4hX٤!IWx_/X5(U2P4BDjřEg,3⅕D8#nVM̜r p&:O)76"yqNG,9BBƎ$` PHa)*MH!ITl_! ɿe?nUZsC](U2P4E^(YSkf9+5,ʨmf	.*mMEYv6Vh=vܬIbfqBfLь괙Iж#SPY@geTfQh$̪Q5fQԦ۪Goܬo
H+>3* v! ƺ4cq4"8Ͷ#G񰬪Cx8]Ve8(U2P4E^(YRyfU8(m[<*uN+52p@geTfQmuUqYwK:.b!$6̪8j!&Vh=Gd8̪43\uY97eVbtYɿ% `JP"+֘lGlEYh]&Nm4MYǙ[fQ	&!nVk5@@{iq2hZftY^K2ȿ8CٔX2xH*:A!J8A`LCtYQ=)fh$̪Q5fQ	&٣(2.&TpXP`HhFDCఠ8\а8/?DhxL0&$h"D@̉0&b¤b eX6$KĂ1j(lHł>`"DіhLؖpHИyЗx2gPL bDQ@zm>DĔ%AE"eAqgVeЗ3B_Ce&hK0*%ŖZf/LTؑEʃԧ&5hHPXCeDG&*lAEʃԘa&D``pb_"8TdXLT/R?
	s0&hб 	ʋ
&!R[sxBPTX?j	(h,K?p%VQXB)t-6JlD(6J.&TCcqNN-ҪfFQe]fUF(Y֓1`8Mv5D]#{_6eCx#YQfQDD75E@ok2 (ok2 e@a7eQ t1\	Ucx#YQKʨeQVk5v0B*j;4e[A%eTm5}i3$cTNUb9<=7!JeqdX o]nPro
:ұc&i CzU̙nϻL`fQD<75E eDCx#YQF(F(	fQDfU@ Br}?/ʜۮgEۛ"""4e4fA}ʔ
	FL>b?pXP`K.hXd4P&XHTؘ4Kȑ"D@< A ) 0pdHс5%y%8(sPCbD>`"D 		 _yЗ+̙ /S*,dLIB_T$[2,(&TKS3B_2fOCe&hK_fEʃ)4<ȰPy/ڔ&	
(l0PHhM(<ȰPy/׌q"F`8T/`X*o2,&*lBU4hX F͉eETPؐPy,HPn(g*,d
54Pؖd
%Əok2 != RCab֔2aB>p0rF.DDC	dH""!CIuѶ&uN`R.]iN@)>cNͺt]gmj<mYQ&j<J5M
Jzor
'̢%7)b 6eCx#YQfQDD75E@GF;@orQO5EOP 	ж8&;S]+9O2f
7uYɚMd6eCx#YQfQDD75E@ok2 (2hF(M]IcM]&QV<tN$b('foe:6:1AX
H+P,N$#.U>V#TC`
4U
AeiP<sVk5dtV*juZH+olX'?e:"qtb%XT+MJVYQϭ&bVN0c$٤/Jŭ((dsPSb/ʔ6#P
0qF;
$DA" BƊZh"Rt̢}i3:q v'aMjEXT1qنpqMfΥIbaԼG,3i&%\=7eao-X*mcZYBP	di/"i	*mc8efQ&NKt0#V*j<% `JP"+֘P<sVk5dtV*j`_U>x MmGF) UCF&]Ic"|ъH+e5PсP	di*iJӋ24TǙqBfLю
YMS p]IbM?+ D#^ZPPɅ,=B(_(lG8e6(aB 0v%HDABDjřEf,uoDV8@)Nի<>ca@㭠G:1J
YMS égRYSkf'RM
Jzo_2q|y+&*qHv0.=(U2P4E^[b<b*GYǙ[fQ(YUYM?ۑQbJ]1a(ZaFlG<Ez>mj4o ,Ȧu|' v1|_! ^ZPPɅ,=B(_(lG8e6(aBC0yP""	"a}i33k5P]&qBʃ)4,hM
J]7L	TX:} 9Xֆ+1_!1EE	(B v6m4MB*j!$0GF;@#IŘaqH0v0(XЫlFlEYhg'mfmh1	U&r|J5oeG,$oBƅ[b4-Ҵٕ*Cx&"PV؈Fcl,hU"*Q&3:I-ҴB+L;K
EVj4RMʼkz+<Tu֞)g]ZlSn}PǛlF1Ҡ8<,hU"*Q&3^ՕQхp%$AzV-c`LM?+ D#b֔2aB9(PC
aBJ(Y@zMP0v%HH@)ZLŀ㭠G:izI+
(Y@zMP
*P؎qB*lPʃ@+b#+8h/Eβ*mV53
EVj4t㲝t(YPr1#FIRU_2*8$;iYVYU"\tc<o,M]2zTgZteVh=ly$]fYU_iaY
*W'<=IneGF1taVeJ@2r|uʕô#	&vP^՞[i^ՕY%ϠGF8,Y*o,M]2zTgZteVh@2tueVh4rox#;vj|a
Jzo|Yq)*Sxzշ+@gZjەq"I7[r#ˆOUY6mʪ b<O{^5m-#`5jGdZYA@*vG&[]fF.A<oedlyZΠOʣr gP"j3Ւ8Lh,08r|
.p D";& <hpqC`iQ<l` 976"@ΫVHv|lnO@v0A@n xGO$;xX]F.prov4;xX_B.Mٍ).q7ҹ>d~Ae897,.(gHrry;U4x_#<,.(gHrrxzI,.GҼBx``aaC#(hɼ,,eaqfҩ&𰱗,eqfAzV-iAC&.#P
0~.T⅔Tء0yP""	"~;
ȑtY7< v;0:	xoUQQdM;)H⅕(S4hX٤p]v/GҼҩ&ŚGxX]F.proxX_2d)eD{]fYUxr3(8ni`^ģӛu}i32yI]=$LEc ;@@o"̚bo	UDvOʣH@rol2j5Bz@8a]uVm	UE7Gb,ɨ.>@X $c]nfMFtroqb,ɨ.>@ ;l2j50"DD<@pa><=7QɿTB4}i22Cx*97e"4QA`qɿ?Xɓc>۱Yt<&Uv+Ag֓**Tv0I]fou8eAč4vi&%\=7e l4 /             h:Җ:Җ:0         ƈ  P      ./usr/lpp/csd/sysctl/createhsd2.perl rl                                
	   e
#$ainorst";S_cdlmp'()-/=Gbfghuv{}	&,.01:ACDLMOTV\kxy%+2346@PRY[]qw!>BEHIKNU|~589<?`jz*7FWX^Zh
L&MU'J.M{B$׹$H
@bCEv73
p5Y,7bs}mMyYc}7wZsզKK;Ⱦ n@L&. HF8^#t,7LNS\; 
IUp0ncp5ƸK0ҳu02XK4M{
&jwY:ڙaܪ"X?E36ok7\+
[cp(H*
$0$Wc}<AA@ X,8@8CM2iBtuTs@Pr5CstP7N%5d73@~ L@03ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵcXZJV}9fh(9{kH"D$H"D$H"D$H"D$H"D$H"D$H"D$H"D$H&.n0fӒ>*pYf{B&9,Yi[Ⱦh9G1w2Rz𮜖-5͘Tnn0e@QԲhYRdbfTd[NK,M-3U9Gs7s%.n0fE4ϊ;r5[SKS7(77E%d)\oXR)%-L)|M,Z|ԅkcq.䣈RRR	RR Lo=eձq!QRb&T	4ު"dR6z˫b:sLq Q0X!A *B`I!AY0fJCf2J7E2JfhI< 7%@4L"eHPl@4ʐ(eHPlL42RXΛ}-w2úrYg1E
o%/\UYmL<7MM,ZͽNE#ñ7✢d4k3zϘ)aؔTci*qŮ|)垘٥Kc3}=eսnxK\)8,*qSizcfc3yMHPo־ӒЉ+
%-\֛R޳rשwB|^Ӕu \^2RʐJWδ°xS9,P{zfs/a0fz^
̩
+
W}yFK^xS5KS/)o)P`o-9ENf+	E_55!Afj1u͘Gxʼ#6`V)Z17ǂcoXlٌ+URE8|ԅñ76+UR'J_55!AXRsQ~nweRIXR^3lorYgMXFtoV
7'J6*eSR-afcE;fz=gr׌)eP5^*QLU^2RJ m(E!oH _Qc$c6a(kc	O7E^d?Xϑ|(o䫙R+8/} oDք9F67%34Q(k(j*\L$n%i/;/0HҋִM$Ho7EDS1E67`u{_7E:-zsDS7(1lPYyN$]WcK.J6M_"L]WLA9fK:0N/)ن7Gi*>cd3y!K
t^ӁxZo[3E0W]
tQ9f`Ƥ^SMo(Ʊn.jv7K/2W~N2cX,#x(eJpAR7@Ʊ.Ӓ˫u:M;UQݍC%Yie5a<sX?4S%d)\ąEN &҄Rܕ4br4QzגJT	c!UҤ M,IKҌ
Da=D	"Rzfo7fxHМ4B{)EXO	WTQz֒	"C3cX/WYqc-C@LbīYSWO7EnEZoQ/WYq2kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֲv5	y3T5W\(5jVz9uOce1658._,h{"aj}zTro5K#U\z'7YXD*aKc*&$0Pf2j8BkP1LM=9x%JL&MU&&Z'E֡8YbC 5IVZZ	 bfk@97Aȕe3ɚɪӢB$0(=1r"C ICɚɪEɖOADQ!G
Be&j&N7E[1($)
Be&j&N-ExE!HLRd]rtB'(+iPDQ!G
BgI(+g(QPDQ!G
BgI(Q(zM"V($(!HL1EQI5"AC<ň[3E2QFJZJHTTJ m(E!`$c6a(kWg*@P@Xj m(E!`'O7E^dvHT$$	"H)i37d3a<$ImhNrIơ<$ILJ/ZxHҋִO	D:!1^r1yLo 0P@ c ` \` eל#TQ/8Ҷ{"WDQ"cP {*&$1(E1P( 0V=j"E@AX@AA! aL@C0/R  Q(3](kn	gHFH `rQzփkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkj1|nԵ5kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֲ	
gpH Td$)l	
}3Fs/8FZ y#'$*2	3pux"`@@ .3!\Ac4ϊo(;nCv(3xY\ LoF%` EXu(KJ&-s(ɚɪE4ThDdKt.A)iDŮdPdQM,Z瀥09v܈<Y"QDdJc("DL`TYx">
㖾nCv(3zrg%p7ү%QTt8j#/9ֿ=8F($% @j'quctc}L"ޚwJ</(N2ӺQ啰2L+U3i}rVE	Ć h
E N5H+)ү%ɩfҪ0@n 
SAVr dJ("DL`TY*&$1(E1QdJxx,H
7ו!YLwM񌫖tNJ^}0E?r󑈽k猢(?rH0ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkX7zQ2R{Nj1kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵcަIK}(&L"(H$0DP V.XZuIK%-(XfҪҶ&PcSpA/tRy?۩|G1u)x`i֙ym@3AȕQD"%w"TLHcDQ"cȕǂ(#a hx)|?r󑈽kƏrk(4?ל#\EQ@\ 5gB:95g@@!$"Qr"ӭ02J_)iDŮx"=G[g`/%$ q@!ɬG#gu!yo.%/,-:/9-(=i7 'A/4
 @܎stny< gYAVr dJ("DL`TY*&$1(E1QdJcX04<C˾
ځQy^G5?Ax"`@@ .3!]McDo)P0\PDCn36.l
@B 1?L 1 	2h3%-(X7tzLS¤	PL|R|oyE dtdKniduX`cE5IUuɧE	vRj1`XmHOpԳdiUpP!t?3o 099r 99p "9v܈<Y"QDdJc("DL`TYPG`@PެԄ:c")T(jñ0GUD~F"Qq0/=7_JW/9-S0Ve%8F($% @j'quݯ tR*.&15,8U\ tuayNޙϙ8H TdqOK\kL<ݤ4ƴñ;sa`:fV O&7i>f-q7Lͦ7*WNK-(^Jn;`d2OK\kL&G#gk5"F5gerV9
"zsA72Y/ZD a[FL"DTTFB#"B"D3=j"E@j'.sұTu/sDFpH@3ל#\1<29M+HAX:K(<Ì+kgx%qE&0*,]ȕQD"%CE|<<$)Х!Qy^Gz^ps$TƢzSJ!RPa@A^Sy}AVr dJ("DL`TY*&$1(E1QdJqxx,Hu	GS5JB&?r󑈽kƏ%ADHDsBìjfm1D^SͽX)Tu{_cRfL$@$&L$$H  L|Iz7#d%DP8`fA^1E"Ga}i[[=ȃő+(E1QdJD2!DE*ǂ(#a hx7zS6M^^S^qܼb/ZDh=xerV9
"/tF;
gG3AȕQD"%w"TLHcDQ"cȕX04<
kBLD~#z׍Hz^ps$TƢzSJ!RPa1fm1 l|RaLv܈<Y"QDdJc("DL`TYx">|]zQMhRᨏܼb/ZTh=8FQ*cQ=\)c(0-Z^qY{J7j^kվE`RP/:K*G9v܈<Y"QDdJc("DL`TYn<A	A@3y¼^zީ5J~kվEfUN[S/  ` Qy^J3y5pP#329M+HAYnJnJb G8Ҷ{"WDQ"cȕ,Q1!eDB(
"Tǂ(#a h(o5W~K^:5x"Ʃ\4`Ⱦ8ʹse 48j#/9ֽ^W=8FQ*cQ=\)c(3|Iz<tBo<$s+kgx%qE&0*,]ȕQD"%CE|<<$xWS8"%	D8j#/9ּhIHTh=8FQ*cQ=\)c(0:K%8ysr])/U22A^(EWҩ&et4ZIznn)HR^9Wҩ&e1	s+kgx%qE&0*,]ȕQD"%A@x"8xx,H
coUȿS7)zQ|c*~BQy^GPhsB:@A^qIz1103tC
SaRR3%Iz1`f/T0,nHcJ`fK!)Iz10PၛRRaRRx(G8;JD,\eDB(
"Wp%DĆ1E&0*,PPG`@X7zb!wΰ%6X)zxn
,A((7 
D~#zמ?^ps$TƢz29M+HAXuoKykzQ _ /T
gE?Rg(z::K)v<ÌtRg0Hox"2J]3zfl$XqAVr dJֆdJ YPG <NQLq207fTTw5H/zfo5EY3.sұTuq8M-dQD7=Ȋ$i
`J"<(%xW%
;\"3o @E82^t]XTy[)Qzփ?_ /T)yJ/Z~L	2;32^ Ҁ&8D@?0&ɠ:&mVxQ4ag+<q([)&AYuYu/gARּtJ#,?_ )E^PɺK%#/?Ke %ꒄ1h3q8M,G8YDM4:::Օ,$Pd%꒝3#?eg%Ke7YD'AIL+<q([h(z:[X*D;/7iy7q8M-eg%K`^)%꒘v+<q(Yα·M^,UEKtF򛤽RQ2I^3^+Tv/TAX@A^#S<;3^#^rT6caZ/TgUIyʶRTeAX/8F[3EtުD%U,Æzn7juUK=1
bs}o+t>s|hE+&j&N7E[3tQ)UK=1ei[[ y3T5W\tPhU&%U,×NJY鍞E@AJas^ps˾
ڝe.rURLlj'˜4r Eei[[ |*.T(2=G*.T(1|}L4ƸVݩZs_|ohZ;WҋֺrU%.oHE;·z׾f-qS*emfՅƺ󑉽f7
C24ZkF&]L/ּ+U^j3
kF&RZ\5Ga)B,*A^DcqKhFf|))S/(njYs4S
UroJu2
7E97E)JZUyemŮ|>cdI>a^'u7E)K$nS ^& _ Y#tRDXs+kgx%qE&0*,]ȕQD"%@/4PG`@ģ(sN)S/(2p@;}/ib>E\
¦zy/XJ$yOS5&-s_DR *g'zQ"53.sұTwc8,)i+
WRuWMZs*3=.f|dL)Zt*͍ל|R,.sT2ýhUzcu'댕c0W-z񒗖%/UmV7"3y8,Re;"
U3yzcf_j|LZmroǩ͘ygw6,oS0
qz֦n,rdd)RPcV,Ё陴@ǌͽX)|eV9xKJ,q/]K/ڄ7"($w#qml"D2!DE+YbC"QD(PG`@P/$t*Q%,8j#/9ֽgerV9
"?ΰv\@e	WV8\7qb9N
&0˖"?_!^nDP IK;8Ҷ{"WDQ"cȕ,Q1!eDB(
"Tǂ(#a h(RE:qw(q5E^zSJ!RPgct7ju47Yi[7E+|n-gi~o%@ܒ$/XJ9yONuF@A^-S<;3^-AYjgR[)Im^-/tBo<;3ՒI<y!\6eKqI3'K$AXJ)8n^,ts%2R 8x(%2ROtM,)DQ2Ь136zZyOMaS7;f/T &-W2R^j*\LfH ,Ɠ3)S/S7 l;RIzLJXs+kgx%qE&0*,]ȕQD"%@+4PG`@
) &zQ#e.=UrjfVp^@@y/XJ$C7Uz o~o5.j&1E(5W-zS/S7(t	
s	DS M򞥧;},j53}+8/} l8j#g\)c(0IzaL*uISi<m·Nޢ}+8/iR &oLΩ{RStT;R:[°U]^;L/b>jYwV<ZrxWY)IUczB)S7Ů|)Pi.XDƼ4kcY/Tc%2R
udRba?Y/TY/T@K*e7V^S ì|%0#gY/TZzL ^S)J1/tC3#?ܜtQ'S<wIz7IzL^IzzH/T%꒹)nJY /tC!^ե8';}lI1%^G%M^S$1K!^IzzH/T%꒹)nJY /tC!^/tB\o<99fO{n$	ɬS=9fo>fA^psӝfUi;}lܜtQ'5c X-dPv5IUuɧE	vRi[7EAܜtQ'Pd098FXYA/q
* ۅEʞE8FQQrXYAìiy8F$
5lQQr0T\Pgk+ b@PYAՕ,QQrPgi[[=ȃő+(E1QdJD2!DE*!PG`@S.+jD~#z׍Ph=\)c(0X-ie:k E)
.RjwVZBPc;}lzR˙Q=7 ,$ BA
drX0lO4UieNf
W:Ke0hxzcxpX*3QԲhYfQ	DQ!VtR)=:&J-iXn*e3AZJY|X-i:k EU,))eD?VIT6^*	EXntQ(k%	DS¤	PL7uTA4UkIK/]˾uJ&#gtR)nR3E0~?n%h3tM,dZR7DVE%,	guK3\Xn*%WVwEY&J-iXn*e7DVE+L ?:7R˙(^i%MXm:Y{J7(^юJM^W @<AMe2Ys4StJnI^Wq)HD=Pv5IUuɧE	IeM^)K$wIz]!4S A/pRy?;JD,\eDB(
"Wp%DĆ1E&0*,Px">x"w[P8j#/9ּh&G3y5Eʊ 1 (TD<EɬOA*YQrH˜4r EeK3y5C\DEE狁b!.Mez:7T3E8֔7E)eDXn*ZL=@A4UkJ+qS98F[3Etުr@᨞?cn$+=&J+qR1gyNޙ@c^Y[#gCtQ%i\{rDw4V9[Y+HD	gDXn*B&27.U(XqYLy3T5W\tPhDV⡚)K%7Xn*+J?ҶAɬAJas=7fh]VɬOAsB?<\réFJZQ4kYLj'y5Eʊ\QM,Z#cfnT7EV3tM,V⥩K%c;idr!3tM,V"c)9[JҹLguY.Y+HDw.U(Y/tM,V"cS)L&MU&&Z'cfnIM9[JҧҶAɬ l)3^ps|fmNܚD\)c(3?ל#\p,E)iDŮb.Me1?ל#\T\\p,E)iDŮb69[hCtQ%iQ?ΰX-ie:k E)
.RjwVZBPcu*bbPYszcyx+lMYR
*E95gv^NZA^@L\XX
Fsܚ`vy!y1z]q1qa`(`\=@AJ3+kgx%qE&0*,]ȕQD"%C1xx,H!em@ᨏܼb/Zܚìc\]Va1.*<y1S0V L\XX
F b97 &AZZs)iEYEՅH$9KV]n}3`97ɚ5J2R%-(kA:AZZs11qa`(`.AA^pqQrsܙT%/ M*r/;}lƢzo4VTbP0E55eK *.TT\T_,c _ IM¢`Y? [$^{E!\=2w9iX+g	)T\L#gkdpg8F($% @j'que%-%aJ8d91B9LfEsUM+8D?o  PH"eHPl@4ʐ(eHPl3[¯uV!c?n*,|-
|kIXR)#*BbT@*B`$ޮ@e%aJA7qxN;Hd::a3Y&r	a3Y&rnE$ޮA4TU2E3ʻVA]hB&9̩
|Tͮ?_ 2~L禍dYsrҨPkOA>f)fTɑg;JD,\eDB(
"Wp%DĆ1E&0*,P`ǂA	;k>yO%KpG^r1y329M+HAuYjsrҨP*Bgg2|S(̩
#dPɛ]2LE:Ҷ{"WDQ"cȕ,Q1!eDB(
"T1PE 'S/)<y/XJ!Qy^SJ!RPg3|S(ąEIqUT%-%aJ"?u58Ue3N
'	0ϙCn˾fA2a! @$
	a XLK	e{e0USAS0V ꬻ`$yvgS0V uV]0t|o<8`f@U| ǆ#dYwI	y1H?t 3dYwI	Ǔ`ꬻ`$UO<4y@U| aLxh03Ue3'RB}1sԫPH%uzTל|xKV?rf4%/)zp(U@t 959)yMɚҌ;Ue3' ?|IXRvqt+9t+cpɚҌjqt+ܺJ÷&jsJ2RgYd9xKJ,LdA| !]S7jk͟3SK7&jsJ2Rc?oLde轧CUe3'@'SLyg/rVg$?
y2 ꬻ`$<Dy03 ˾fNOG?t  uV]0t}1#;8qxED ?:Z[8|:.	:|oLyml"D2!DE+YbC"QD0cN<<$ Oަ^SYy(^C?r󑈽kAaxerV9
"nKA`_VQ=Cn_:Do
_L4)lA WΨn CpHJ2R򛕅*d:.	8g`_XRFJ^PLh4ANi.O)rf4ñ#nVQ?,HIXRL$)\;#nLggڴq+
W)3SKAu \ҫ+a592(3γ H%^Q$(S"8ɚҌy0/
 ˾fNOɏ#dYwI	ȑ`_qNiFJ^Srf4%/YwI	t g uV]0t}1Ǒ`_		xh8`f@U| HOD0,/;JD,\eDB(
"Wp%DĆ1E&0*,P`ǂAxx,H L뗔Qa(D~#zמSJ!RP`XYXڴAVr dJ("DL`TY*&$1(E1QdJ &< 4,,/`@`e5\%	D8j#/9ּsB2RRd%zCۓ59)h0/r+
W)r+
Wۣ%-%!AjH6^Y[)i)
AL]zHPoVf|+.??Yt38c/Ue3'@ )Eq$??Pg|ݡS0Ve%y5}z"d)Q8FJMϙDF:񒖕^Y[6^Y[5.M*ìe啺l87DSּ+UR9DưypeD  Db㑒M,ZuczK.J^v^)7ETg
UsToNQ7q%EHM,v.9)iDŮgXަoR˼ҵםTٺ(/(< pb;*2< pW1w7+y^DQ x@:7+zׅ`_S7("0^qKJ&-s:8V/7yf7MSf:=k n·䪲
&4cӭCfaYz^z^/VE|e^p/QkZֵkZֵkZֵkZֵkZֵkZֵkZֵcx8²,R. aYzEYG+$ުQzփc|F%{7juUՒoU#f־FKc~nv^SY&R6a(kn9%ꑃib61LB&#gXܼ'J[vYf%X"<].f|)V3jsՍDQ x@5S7W\ӥ_:4k/[JuJ&-sMx&7j17ju7xSR6/Tz񒗘)*b[)  _ /T#
b[#QSLu5m
<I67¦`@J#4S_:K`7*HT7⤋L[cVL[9t*G7&tTil Tp+lo^Y&rnlVI\xQ4nXVI\azE$ޮAZAgxQ4SA^@eDCs܈A xM@[`i֙ 2C,(%xW%
;<
 ("0,drV ?E&n6^8QzהnH29AҋּtFƔi@I29&	K#dH 	cBgK`68M,G8,ĢilYggdQDgil8M,?y@z]^&A$s/)39 r񒖕^Y[#`X[il[ E#tR/Z򛤽R7n|Gۢ?γlWVxKՒoU#fֶ9xKJ,3j*$l?v\@e	WVAˆ,G)uaR&rPgaM#gTIrLAUg)1yMñ;tF0A/qy.[(S#gzהּ;X~:P q	U啰Hوk"?α\no0^Y[cXlٌlQzיRIXR/)3JZUyelqXlل[[)z/)36^Y[#gD7q9N
&0\GG8*m%ͤ)\y3QDIsi+
W)z| $?9Si.m%aJz$lKIXRrV LhL7q(3ʛIsi+
W(&O&a(	.m%aJ I iySi.m%aJ7ATKIXR@?0y33?ܰٳ	BS=af2CR1Si.m%aJz$lKIXR_J:9afmn30+ke36c$;)1x("^rY#tRjҧ\,6lUyel7rf%
Pa1\no衳	U啶7SoRWN2M^'{Rcrƫ¹]0WWV#o,4?v@dWV8},z/)3,4gA=29N
&0թ/8e
n\ͤ)\g7gPggeH8|R)2Y1yM^ñn,?Y%
LF7Tوk%ꑍY鞃?ե/0/ԹIXR@?40Sf")K#v>#ó7EA7EJnzגWu.fVK#0/y(lP7EJz:V,?Sf")K#v>#A7EJnz׺K#z:P q(lUyel7q(lPEc[ԲWV[)g%K :K!^7y?%yLAgIz%S<;?/)nwIz	3HWG8DM4	AX^Sgtr %-*G8:K!^0/4StM-Dg)zה%ꑼ;tM-c?褩knI\;tM-c<;tPgzcyL=Z˖]Uyelq#躰iZA/rP3_D=1 ?}*?γ?_ /EP G`XYIz7S<eCȰ/E#f")K#v>#ñۋ=4j\КDIԔoZ|S78owWyN2ϫAŞEՅH&ԊE#f")K#v>#ñðqg:i{3HوknH;tPgK.n%
MISqzׇcvl^~)zׇcv/TP r\J,R˛BugYu/g&nYD3oLJZUyelq<P=./TCt 9&nN HknH&ñntRT^7Iz&ñ(3_D=1?vr .M*G8^pYt]XT4H9y(StH/ESA꾕AYu/q"Lo(S#,,|R)2Xzה%ꑌ;vŞilծPM"b$J7]-wQTwל7M[yf+<yMgՁaALS¤	ujEzה%ꑌ;vG8Aagڴagl^7Izc~(3?ܥ7Eml褩kñ;tR6b/Z~?Hkñ;tRCgd9K.n%WVw)eD[X::c(hUJ2RVqWtQcy櫃n\Uyem7A"?ՒoTAzYtbE3UJK9N
'	0^DpuV]0	C	 PL+	eXH(:.B@aLg2 ꬺR^	|o<D9?=F"G,2ϯzQCg:%5XJ<#>&pOAk#z#ֳuJB&:9+(D\)c(3?g2 ꬺR^	}3ɞGIz$	<G8C)+y:.	:28`f@UJK!'@'ǑA(3?_ ˥%xc9OL~(Ꙗ{EXYe5^GdkYxEL%5XJ<#>&pOAk#z#
R1oxG*5gsB/)
 $7 
!A$srW)si+n˥%@MgoLv )t"G89@%.o<9jHnE dtNA/Iz$	&y03 ˥%0'S<D9?ܹ܈@C;;rUjH6^Y[ܹEgguڐu*kIKV3Y&r-0Z5["nH$ nH$A/uii6#g"jZZy<?ל#Rhp("j@᨞B&dPgڴ?_!U)-#UZZ}-9EJDuXu @
l  2             h:Җ:Җ:0                 ./usr/lpp/csd/sysctl/createvsd2.perl rl                                
		  e
#$ainorst";S_cdlmp()-/=DGbfghuv{}	&',.01ACLMOTV\ky%+2346:@EINPRY[]qwx!5>BU`j|~89<?FHKz*7^WXZh
H&IU%J.I{1"Љ%j tA1a  C"v73
p5Y,7bs}mMyYc}7wZsզG	NK;Ⱦ7xT`$	
q!QzjҘ31YMqL0X$HHOcqEUp0fwKSc}r7sM.twJ	p0fM,CP7)n(;gjerbZ)+xY:TYMq7cRJ$2(Wc}<=B_DD$%A'UI';}lsTC7E4SZFD9#4 'd!!<HA@ ǱkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZƱ4}9f$E{kD$H"D$H"D$H"D$H"D$H"D$H"D$H"D$H"D]%nn2fӒ>*pYf{B&YSou_VF SK]S7E)9A} TwthF8l3tPفSR˛nYRdbf#Xh_NK,M6ڜA73x%4ϊ;3iY}o(77EsU5#d)\&oXR)%-L)|M,Z|ԅ8kc2VsLq1 I P4ʐ!AH ʐ(/#LdLf衳uMy)OāT1(,,~4eު%8KmN(c1$@*BbT *BB dŮt;koӒ<E _2RX/%Ub74k698ɛqNQQ2RXχJygwR*18Kib>fLpd3}^7bdל|X8K\)´=1K榤(9_
ihDLŮykM}LYkԁr;X!A/Z:.^q)tcLeHPq%aJZaT:
oӒ?-u]Ƿg2
qz#&nwܵʐBХwהodͱ:W3T2/LӔTNozB^eSRjXwXpَQTw:ÊL/K]}mL<#af0W5Kcު^eSRLްW5Kcf+|ԅ5aJ򊣢,o3s,ʐJ轧8GcӒ>*j6!;}lU]x&9ͱ:WyWV/Yk0")S7;x)<wi^.N2n%)tU%.,oi &҄Rd	Edb	\ܕ410^H/sJ2R3"-ȧo8Xϑ|(oַƜy)s%-7w-u]"&~F7efsTH/s׋քLi&5"yToMX'}QDX<E)z˫bx3"	ț
b"",o ȠD

b((2(
AA@\A,o'2"yAALDDEWNvPPdPN"bPPdPN 79i'ib>E9zr\wu6"Y{	TTJ/Z^v^Tҋִd,"9Tu{¦n{Jr*4F7fa(E8;}lU\"03.+u6`^S12R3z]敮KM%lVC:-AK 2bbK/T$ɉc28GR0(on0jo+
W)V7K/,5=.f|dYxFtR#P&Ʊo;ƀ7,rYunCItsJ;x=M9,⦬#|z%|77Dv5xdo[7E21FJZJPXXF m(E!p#"c6a(kc)^dfDX"(aSVք)koE}Sk%JT	l*Dn%i/;/ Y¤U6^!l*DBTޙ2M陰Hꮕ m(E!p -HfU^Td,knqzN˃%b_)ZiꚺP&V0XOcpksv\QkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ2v5	yWT1fOCoSS"Ƌ&֡7ץM/Tr5UWszŕLrb1D3+Ģ	-C)#tPE7BB&y#T%W\tPhDZNtJIH&IX%hIj$6ISc	T$j$N-PFk@ƱȔ	 $j$뒥$Z=8i}^HLRd]rIBFx+t=8iE!2g5IUu'E	OAD(@D"HLRd]rTB'8	DP<MbsLsp3;H JH\Ș͘J/Z)^dfDX"(aSVք)kM+8/iR &΅y(^!l*E]SiEZK2¤@@[
D-HM陼$ޙaR#:H JH\aR#(GW"#zדNvٺ(zp0$᐀<`	 eל#TQ/8Ҷ{	WD!DEFE]8%
"*2,a!<=J"AqAX@=2AQ a|!#gC0/Q@Q3](k	
gGeF #G	$EZ:5kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֱn*fy<RcXֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ@=2AQ a|7
ʍD݅&sgj1h3yL_pLTH,C83
H3?ל#\J$)a1OAq4un2fӒ>*i<ZZⲍg%p c5}a( 
$Rib<5IUuRiW"Љ(KJ&-sbfd,:dKA/réFJZQ4kĈgAVr!!tJHD(Ȱ%wTTPgD!DEFE*$
(D$
0bo[M_MroNQ:U*?r󑈽kgk4DE0xL&030&nLsDO7ҏ,
r%i@9$JFviӔk9*bS_XJ8R͒U 8p _)<K!gi[[=Ȅ+"Q"".QQAiD'B@Y`'L;^Te172ZҖ9)xa~#z׸3y5D@J"<&	aWìcZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkOV
>J]:/i-F5kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵcy2RU_J1ɬO=Ȕ	 (+u,uJZQ4kR͒UAml{YB1O'Ǻi)<Hqԅ犾!]p`i֙ym3gi[[=Ȅ+"Q"".QQAiD7Ą@ !?.+j?r󑈽krk(6?ל#\J$)a1OAwM4urk)r%i@9$JFvid񒖔M,Z"Q'sxD`=ɬC!gu!y⯈}s\#%/,u^r[DL駓I?trx$d3Ot`uml"D4DBWp%EEqJ"DTdX]BxxȃL୨"7F"=ɬz^psƑ(	cq=f4a1Yd(DCr	m\3lx3nHKJ&ޢ!躰Ct ?_.<<qDL#%.)iDr{%-(Ya&xD`=&<"P&HPdDL`i֘%T+sH!%-(XMST(kxD`=ɬC!?^psObD0y5Ϛx7t=M<'gk@[vi"Q!UMR4/,୨7gwM4cQ"0P(Թ0f
(D!?H  $ iaɪjbQ!躰Ct ?܉@%2RqђM,w'2R҉gF(*VqђM,wMST(kAXPcG3֙<ayNޙϙx8P&ThqOK\kL<ݤ4ƴp?AX`ټEՅGnOK\kB13yy*9)|)54\i%	G/9-0l+Li;6o3T7|ZZt׬$
^樏3
pKzˌln3ﮬ=[7jCU\c-i/tNp^|C|TV7MX)zQ^SǺ<I!=ͫ`ٴ7@ ÌǏu_3ͅ] a|#Ã`ٰvD33u_3ͅ] O<f® L-=ycf֕+%zzХ^9t0ikuaJQ'5L!3BBƑ(QQatJD4DBTHOB@Y`|Fy^g5?A{E
񸞃?îsҰ*<:7R˼ҵN7j$cxwMr[3E0J!vYi5dVId4=9f7MLKւ#q=@<V%A80L5pijFA Yyq8FQ*z:9M+£ ì|{(*5"dq{E
񸞃?îsҰ*<:2J=!gi[[=Ȅ+"Q"".QQAiD3B@Y`3%Nօ)~#z׍F#g3y5pP~7gurVGAYIzN+kg%qJ"DTdX]**(3"Q""az|HH"xХ!#qܼb/Zl=8FQ*zSJ00Lr1oV
fU^轧/T2`oY
	
  $ _=^qaIz9Ƒ(y8;/T8x% Ca}i[[=Ȅ+"Q"".QQAiD3B@Y
@/"mL5yyO"9zQy^gz43
 Ha|yv܈H]%
"*2,.]Ƒ(QQatJ0=$$
	<azQMhR^r1xL=J"AOA9iXfAc _=^'!c%ꐷ<?;JD$.\iDtJHD(Ȱ%Dxxȃ|c*^Ӂqܴg|Ta(Dn!E^6yȋ?ל#\(q=\)aTyu|xIz<tK3BBƑ(QQatJD4DBTH! P,0HOW2E8Jp=7LNKFy^gXl<g=J"AOA9iXfAc _/Ty3I|'^/nI|&&ÃIzYK%ۤR_I`C8Ҷ{	WD!DEFE+]8%
"*2,.Q0N7Ą@ 0OY{ zƩ\אbȿPĄ2PpX10HyO][b(!|@~#zל#\(q=saQgc _/Tgn)HR^z2=^ ?ܫT2-J{R6![R."b*U$̾y07$6,qml"D4DBWp%EEqJ"DTdX]^7ȃ d꾕2:f=9/XJ:oe\ԁTDn!E^6ycgל#\(q=\)aTyuXǺK!7y?_/Tp'nHgI8;tC8
OۤRRxÃK!&&ÃIz3@8;tC8
O^)<L K!'@`fK!'`8;tC8
Ogi[[=Ȅ+"Q"".QQAiD%! P,0MX)|
Q b8Ղjw`!!L!"0!@	&	<LH~#zמ?^ps(TurVGAXuoKykzQ?I>ÃH[yg/Th0 _/T<qHO<=d%꒽!gRW'^AYIz.3^K'&0Iz9_<xF3tQ*yyOLgHs'4Ca2%a|QJCǺK)vM陳a}i[[=Ȅ*	Z**(2	,<@n$$	"$ X\iôޙ;5SOUQ)j7b_&%	DDn!EY3îsҰ*<:vYi7N]Y&9CfJD8X`T<LI:(JNVI _/TG<qډ+$2x:@=ѻQ%dL&C8)a!=#)fDҪ8Og`{.Ĉgj5NF\&?_j5| gAVr!!tJHD(Ȱ%wTTPgD!DEFE*	 Xxȃ 3zLsR)zpfS,;K\}Kf;W"7EY#=8FHH	DSc1?3
h3?+v& )a!=#)fDҪ8L
AXubktP1JZJ1/3_:NvXR;MSVـֺrU%.⦩UxKN}K\k*oTħ
[}:5aqלM1bT̼z]8G^r17Vf|^*ZT8GS^r17ZCf7MK.n1UsU;k%-%aJtQ 陴8@ǌͽX)|eVx9xKJ,q/]K/ڃ"P&C܆Cgv܈H]%
"*2,.]Ƒ(QQatJAXxȃ KN2id?r󑈽k=\)aTyu/tCF(yg/]K/ڃ"P&*4@tN2?8;JD$.\iDtJHD(Ȱ%A`6u$$
oKS8ʻ:/j?r󑈽k=\)aTyuY5OALͦ9_^pY%/3Q\ճoL^2Rҫ+d3|{=!gTJ9=j*%&?_5d3BBƑ(QQatJD4DBT'! P,0'J^W-}^w=LF<d~#z׺>zSJ03?γ;zfw.[\ҫ+d6g.!+
TO£$HCr ǏsK+
W"pv=^vD3?+kg%qJ"DTdX]**(3"Q""8ۨ! P,0WǢҥz%nLDDsDH~#zמ?SJ03?*VE^Op%U5J9s1Lͦ9Y_QtmN2R3;cŕ*AR6Ȕ	dd6qv܈H]%
"*2,.]Ƒ(QQatJAXxLm(D	xFJ^)Uߍ"S^r1{y343
 ?:_/T;犍"P?eP~JF(C,w!ml"D4DBWp%EEqJ"DTdX]ȃ`7dpKe]yU5JFy^-SJ03γ_QJ
jqcop[Adml"D4DBWp%EEqJ"DTdX]fu$$
0EU2R{Njo^EHfFS-j&:˩MSTDn!r󑈽kAsaQggX^FOA368"c/)]X&)tYyNޙŋcŕ*A`oɓXT/#QSbh3:/#QS207y5Յ+2wiu`|dn'?:gu12Rʹk=1Krx/)3ǃyNޙű 3|{=ňl3Ҷ{	WD!DEFE+]8%
"*2,.PP7Ą@ P)xoe\^Ӂ{S}2ҩygw|T=1K񒗗srTט/"7F"qm^g9iXfAYgrLpd1rך1#7>k=1K>j@3%|y%.e}%/:/i-N'ljfm1󷪨:R]LqyG' 3;x9r˾J,qV<or33{\C,)R>
$!Չ^Sgqbqb ӌ3;xqeaJ`ogXL6gED^FQh3_5d6ml"D4DBWp%EEqJ"DTdX]<<@o	dA>2R=4ʹk轧Pf1%/VC/9ֽż\)aTyYuwgݰ.gݥ61y5Nvٺ(zSzc#q=7_:R\䪥Zw/1q啺c9c 5IUu'E	Б(䪥2=G,0T1Ղ֐Oei[[y#T%W\tPhU$%U,WNJYA@=ID3+kg%qJ"DTdX]**(3"Q""(D$'zemA^r1xJrURLpl=8FmNԗ9*g87gurVGAX1yIFUK=1Q@YU)tH0oLJZUyelqJ	
rH	:Kj啴ʕ־2R҉\ɓtp3F8  Ǹ)<Hqml"D4DBWp%EEqJ"DTdX]@B@Y`W2^S3*W־(|dz?r󑈽k=\)aTyuRdVUzFJ]0F&?3%Ǻ2Rҋֲ35%-%aJLR+L
eLs|1zo3Q;DꮜYRF5v\ђ^uU#tQ363rk(A=ID3;JD$.\iDtJHD(Ȱ%D=$$
		w[PDn!E^6{YAv܈H]%
"*2,.]Ƒ(QQatJpVK3ic5>N5S2 K	Gp=F2Rҋּ\)aTyrk)Ϡ0E!$g"3d .FwLR+vT%U,3tQ)UK=1d	 C=ɬg3RW	 OA.*<y00f
<AP3nH-X-unO£H|{`_<!g59jdFJZQzփ?γRՂ[L D3L̗ =u/r`nH
3mL&?3%ǹ"3y5rCq=S{
;OA?ΰVT1a` PTA|{
ڙ2x?_NɁ$	3]U%aJ.*<7|Jvu/8qwT*d|Jv:3;

qwT*C8=Rma?γ:9M+£ ìu`'y(JZRիǺZX-i	g9(䪥goFDc2x?;JDaAmly>>aAα^psӝntoӫ9啺ygu(KJ,ZaރNUzNv4W|TņGό7S8kS}7.Xygu"LpU啼-LA'UtުeeyNqoS0RQ2Rüdu7Ll(>cnԧYe6ȹ|Ncn=Ll(垘e:ڂf_|d\3qff9G^rY;cJZFEZUyeoR衳o衳1HلVITJ/Z1ܳ4N&20^%	DC}p*j$ުF%{ͱU#fֽS_:Yz7	E_
f S7;/)ެz0^HFJZQ4kW5]kƱ+WV<cnMꫧ%|T-J[XbݩZϘ)zXަn:oU^NL""98A'URNvٺ)BAlP&TX YoUV7vNׯS7zc%-%/AUu:_S7f-qYjK}lυxݩNԓ؉af0aM9+\xVI{aD3pO!f/=72%8\e-[Nņ
 0iz#%07e-[N(0CpLM3/8F[7EoUZtuU%T؈OA}` G3֙<v`:zrk)Ϡ0E!$g"3d .FwLR+vT6aSx:fA^<\FD3ܚ`fy5!y1z]qp4T`	=8୩Đc
;O'zrIjH00f
< HC8 1 	"H3{`!2Rҋֲ>
$7@A"3RՂ[a|<qLqQ)iEZrIjH3?Z@=ZZsɁ!Hq陒ܑ!?ל#\X`\$7g6KPOAYj)jk&0@X1RՂ[L	 `$d3L̗ =E
!?]U)y=R砃==ZZsɁ! LD?_r`nHH  $C {`rB@00$!lnW1;_<$
!¸b
|",51 LD 3r1\ SKXVKYަaN*st^>pzogzHC|2Haf"cCA?դʻ)T-C<IgK3ʛY%c'|2x:iySk$d$OAXi)jkϰy3rIjH3?Z@=ʛY%c&O!gfd$A8FHn'*,0W=N.*<G=3u*Xp4T`	 |2d2=RrH Hq+
W'uaQ@N ?γե.*BAlNAY^SgqwT[[.*HgE
縻P7gkBOAY*,0TSJ00X-i	kA)
.Rj7VZBb
<^=af7MaMJ7/5KSϘEҌ+Z;c.\ن7u6c|T2l/AUu9zϘ)yLqS}f[]]hUzvTc.\َNlA'UR6&0oL-.YwiU啲r8Hd.*<D7.b3˥)iEY0)Ȕ	 (+u,uՃ+i+|dK&3F8  Ǹ)<Hqml"D4DBWp%EEqJ"DTdX]@B@Y`W2^S3*W־(|dz?r󑈽k=\)aTyu陒ܺQ^A,)P[&$,qhKIXR<gyNޙű ŒJ	
rH	:Kj啴ʕ־2R҉\ɓql+H3Ǹ)<H3<Ye32b/9-P'KJ&-sXn'îsҰ*<?L̗FJZQzAђr{FJZJsșY(KJ/ZAXǀH2C8S%eyTقPYyNrS7ӔT|q垘q=9f7MNNmrnH(3zϘ){J2Rҋֱ?ܚd;DD(H`	Ȍ ˥)iE_A'UR6ȹsf7Iz`%8g5jB|c*^ `4WBw.dg+x00Pq$ ct D֑շ*Q陒ܑ{Ɂ! LD1K& A"?ל#\%E
,n'|{Ɂ ($C8=cq=\)aTyu/rY07$H P?ܹOrH3˛J
dބCI
$Igc 0*A8F[7EoUZtuU(,Sf7Izcz2R鸴d)\1
ܹ7g!,X-c &<:/
RFr#;B$gqhKIXRhUJ/)ٍ^ܹ/T7.m*g/qǄC1Me03<ʼpLdhL,dg+x	F3^psM=А ICo;ZFVޤ"c,9FfKrDgK&䄀a0aD00ǹ,d3^pqasܖ7g=dܐ!gk+䱸?VTE
A9iXfAgܖLV]*$C8DpCu`үYt!躰Ctܐ	 ?5C#ՂJeҫ+bz˥u?VTpLdhkHO'X39HQu^:`Wu`$!Zτx,Sf `_/T;犍"P8qhKIXR=ţ%-%aJ9L](KJ/ZCg5v\|O"3d .Fw+vTcR1Lzs@nVhUH;(1K#J]7*7gڴg8F[7EoUZtuU#ol/TrJ]7.dcq=YL}hUȗ)#9!px33t%-(k;DF1Dٍ^=g#ED3ܚ`fy5!y1y/q#Ep*grFJZQzz 9?H  $!#woR1U?3%ǹ"3%rB@00"cܖL D28FK3y5ņ
rXOAY%r@P ,Hq,0TX`{z^psܐOA*XaH 43
 ?γ?VTgc;}lUi61UԖn1Y}oDEFyem;zfw%
q(lUyelqYLy(ltPل[XZ<;J*䓢B$Cf7%
$<_",0TX`x\QM,Zrk(7gAVr!!tJHD(Ȱ%wTTPgD!DEFE*$'! P,0HO˾
ڂ#qܼb/Zܚ5eK,0TX`\)aTygjל#\réFJZQ4k5ɬOAk+0Xu(KJ&-s53:Ղ֐Og(JZRիǺZX-i	g9(lgìcp%u[zӄtJIz9_<iayyNޙˤ[\ҫ+d6yr]XTy$n]"gyNޙՂJe҅mlx:ZWUyelբFn6MYEՅG k^B/ǺJ2Rd.C {D%/&Oqbqi[[{(H$(2"P&*e1bƞ4D"U!*ikHi}Y&R19](k&MբFk>cFJY2n_()dɸ:hMբFީi*>cVZ$mꚿxIK6J&W<::ûǺK ?یk^^Y[U\^aMyB5Ǩj˩ȆrݩYS7]*Ku3zϘ)zYܭש6^ɬ0)ȅHR)	Rr!˥)iE^7/TH3{QܹCpj#Q!躰CtܚAzZWmꚼS78,񒗗s|^ɬ3*䓢B$oPلzrҋֳgDSVL
r!DR!BdcrFJZQz׹5gf8!H5d2}VHnBDSVA+ufKib>Eygw5&y#T%W\((Fz-ib3g`S
"R$CJ2Rҋֽɬ?Ǹ5щEՅG Ă\V]*J,g1%ꑍբFީ<:74Je:%l|{R/4C{w)+^S)stS`Ҍ83;H<e	WVg=ˈn,C'uaQ$!tA;zfwV]*Jk^U啲uhdn6`Cuhjd.*<7V]*J Z%)y2{!f=բQ'q/]%dqӝniUmL1
U3KKNQQJgi[[{(H$(2"P&*e1bƞ4D"U!*ikHi}Y&R19](k&MբFk>cFJY2n_()dɸ:hMբFީi*>cVZ$mꚿxIK6J&W<;ڴ?ۧ;}lzژb3D2~]WԔC]GZrU?;J܉@A!AI1S/f4M]1J$UYzISKZEg#K7EY2n6c^pYJ2Rɓr-9EGu(K&Mŵ1ԫBn6M^	ÄlM*yuYuXuaU^feN.x%yemYn9<&#\o75,("7ayNޙYstQ(VǃUyelqMe2yYstSr\JA}` ?1ުF䩥(k+"U#ҋֱiEX%	Gp <F2J*QrEg+#MnJZҋֱgEXJ%ba(]XTy,,(+kA|z2=HJ/Z`>VC8Ҷ{	T=tJ	0=e-YD\LTαW-zJu2asOWPA^r1x%ֳsaQgLT+#MnJZҋֲgU3BBp%EEA8<]B@<@n$$	"$$)j&|ZbuRkպSǔze̾oN:?r󑈽kՑ&R7%M-iE^z?îsҰ*<:=[
ȳHitYn$3+kg%A:kC.QQAND3	Dȉ	0=:ZcTZne>枯Y`=3/ӭ΂#qܼb/Z
ȳHit6\)aTyu|~J%}+#MnJZҋּqml"D'Mh{**(2	! H!03x%ֱA72ZZөՑ&R7%M-iEXC"Q(k=\)aTyunV1*k>c.f|d4k^Sfe%JjdgVV7*SE $@[`.ӭ1J$UYzISKZEg#KgEY2n0=TNFJ/ZdHit^pYJ2RkZֵkZֵkZֵkZֵkZֵkZֵkZֵ5db	\ܕ4YxF²,srTט.YֵkZֵkZֵkZֵkZֵkZֵkZֵkZ{oU#ҋֱђM,ZC'uaQxERV3XU[fTQzC&)@@"HPdDL`i֘FJ_)iDŮdɺ2R҉\vY[H̩XkgʕJ/Z`oBCt$Hy7x`+t]9ʕJ/Z;l0EXFR &{Rjk7 xx;[3z aA}a(Q#T%W\()B$C;ʕJ/Z1զE\LI:(H"H߂@p<N*H3 
O!g(LJ\YBESeJyRd]rIBEFeW+#MnJZҋְ)t2 34$C8BBYstSp%EEA8<]@e@n$$	"$
 Xɛ~Yst%Rg7E*\dzb#qܬA7*ikJ/ZFJZQ4k3:9M+£ L̗ EAg*m"ʎ	$lCr,KEՅG  EAgܩ*8$_<ml"D'R˛**(2	 <=K.nq! H PL>STEIrͽSWjq2)CPt3_[.2R=FYoU#rT֔^ib3gurVGAYu/8ʛHI.Z9<ITEIu,OAYܭ׸cyOƑ(^%J$2؇+f*nDJ6C'NB %enNȅJ$24D7"Q(k+"U#ҋֽYoU#rT֔^^@HIXFy3
cH7;zZ"",gh6`Cr7Iz]XTx~!i+ܩ&R7%M-iEY8;vaYz.^gS7^n ޏZtSֱS{`فLͦ9].3zoL^YIz^Hg6|L^3|%v)@9$JL&,R5tƑ(+x%ֲd4DM^OAy=\)aTywiyͺk)](=f;-K/aRg?+kg%A:kCp%EEA8<]B@	Dȉ	 <wz;=Lމ@C/9ֽHJ/ZA9iXfAg?N/9Ƒ)^goPw5KS/)@{ƹf5M9MAVr!!tJu,)] .Q!0V7E$L+Dx)Y,Dn!(^?îsҰ*<giZ^sn4N/Zʼ#cUL7%B/%Rû*`4{
b3
V0%ֲ<
p (+u,uD/"Q!VJ%z1ުF䩥(k&Mz0=TNFJ/ZɓqdYbr4Qz )XDCHJ/Zy?C[7Y3
V2n46BBp%EEA8<]@N7E$L$Hzԕ4zׁ9UdYRTו/՝AK/ڛ"SּAVF Hܕ4b+"U#ҋֱ+HiEY3:9M+£ ӽK3kZֵkZֵkZֵkZֵkZֵkZֵkZֵg|/Nvr,u4"c1qE!;
|M,ZkZֵkZֵkZֵkZֵkZֵkZֵkZֳ4'J3ip/S|i2AK@aRgVV7>#"Q%LO)@9$JFviHH^X
A/4De>3ª؆u!J$mB<
p (+u,uD/"Q!VψCHIK/ڜo<qml"D'R˛**(2		aYstP	Dȉ!tmm5_JcHH^XτtJFzSJ03?γᮚy<	A	%Jgo:Zqƴ#)4k"]^* gkpƽe]cުMl1|M,Z皍`ӺPUުM.jFY1z^^U3sԲ覼җNQf=LKgh`{L	346q4	UGsB`>gYhjfdp@"0D &8R	
rH	:"Ƒ(#)4kA>hX#8\ 	AᡮFh!Q OAᡠpD`&O^&7Fh(3ᡰ/pD`&LpD`&UFhͻW\隥445B2OsE8#Aᡧ{VۗTfQ5KS\^S<M 4\ 	3|~`p@"0D*UghhihFS:hmi[[=@@"HPdDLVv`.ӭ1J$/iM,ZiDŮdܴ#)?C]4{.Ku|{ĈgAVr!!tJu,)] .Q HԲ7<>
ڝe[MhFSib<L#qܴ#)nDQzzSJ03?kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?ۊ[fJJr,uaYz.^cHJ/Z5db	TSKZQz!*kB2Q4k?kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵgmi[[=@@"HPdDLVv`.ӭ1J$2aYz.^qdYbr4Qz׍"Q(k&J%z1ުF䩥(k&db	TSKZQz׭iDŮdܴ#)^IKH JH\&@ީ*8$YnTEIu,ީ*8$MʛHI.Z'g1i[[y#T%W\tPhD\ܥ7Eml	A/pRx?*,0W<
Xu(KJ&-s53+kg%qJ"DTdX]**(3"Q""(D$'zemA^r1xMeg*,0TîsҰ*<γiy,0TX`xaԣ%-(XPn'y5 ,:dK\gkHO'X3R]WX-i)jX-i	n3K.nAcqS9*g9ɬO>NK  ᐀<`	3QJ2RVA'URNK-
$x@d`	rk)00ԅUuF# H2 
LHqi[[=Ȅ+"Q"".QQAiD7Ą@ !?.+j?r󑈽krk(6.+jd$N瞃K$Z2x $d!g	  $=ZZs)iEYEՅG )jkϰxC8&js(Kgܥ<!gidBOtM,rYhVh332\{ ?_ݨLs&O!gk+Nw)x@dS}{[7E1?γեE
3SƩFJ^*0..^"sLn':ìMYRǊF 1/ueWd&OtM,rYhV!gVIdd3^pqasF;T_Nvٺ)uX&cņ
 ۊ@@Ǻ7j$ɓg*n3D
)aXfĐc(hsa\?_ݨLs&O!gȩX`T3
,0* uY"Q %L	z+ìe%-%aJz>f(C'CLj)gg#b>& 	
T
@TAa [?n0]%aJq<pƹd+Lb\J)R2(8	R3Y&q)+
TVI\{t*A$ޮ=9ІOA7pTOA7t7dgMK%E_C$c?۔Wz1 "c|ʐ7L署l|{3Ɂ#kIg˛J3ͮ=LR$As+kg%qJ"DTdX]**(3"Q""<<&6}B@Y`,2Ϯ^Sǒ"7F"=\)aTyYu-7.m*d2(8z:?2`nHʐ"pv=ϙdܑS$ds+kg%qJ"DTdX]**(3"Q""<<&6}$$
S/)<y/XJ"#qܼb/Zg\)aTyugL
!gsU(KIXR MN(3?YwO£`HCsbۃXTL,LC
B8T& 0VC' Rrxg`x:.
n7y`~<U|] <Ue3W@- pv<U|] !gX_Ue3W@-_$`ꬻ`*U[ C1Ue3W@-_ÃuV]0u*-_!U ?:۽u*k>cdzZ+
U3SQ=^SǸ&U!gLd&jsJ2RU|\gYܺJ!g]%aJ]%aJ8~Cܙ(KAg/8ܺJ]%aJ;59)h3sT2<dWV7&jsJ2R JuCn._Ե`ܙ%{59)h1~aN2S2t^Ӄ}^_/!NJrxg0VuV]0to<pv<U|] 6Ue3W@- g γǃ/C9^Q$'γV3_˾f0ggi[[=Ȅ+"Q"".QQAiD,q1Pȃ`}rF<%^r1y044:9M+£ :t2{`oX*dA=r{WΠ29¹,/J[?pMԫT7`CpVQܬ)T%/YwUXY*dބHLx&jsI|GH<#XRFJZǸJ!73Y%aJ,q?!Lggڴq+
W'3SKAu\ҫ+b5923γ @!^Q$&O 8rf4%/'z+xꬻ`*H<Ue3W@- AqNiFJ^Orf4%/YwU t /Ue3W@-_$Aqǃq<@<Ue3W@&y Cv8FBzT*aTK垧}q?Ҷ{	WD!DEFE+]8%
"*2,.PXcn7B@Y`,2Ϯ^Sǒ"7F"=9iXfAYX-qi[[=Ȅ+"Q"".QQAiD,q1P! P,0 zyMg/)czQ~#zמCp43
 ?2x&jsI|GH<#3SQ$)\=$)\Gb;%-%!A뚡ͥWV7FJZJBg1uf!AXRKT󡡬{e4g<U|] @[ Aq ??g|=3oVR]o羽LqS~2RV4n'{`ҰxSsbq=7j7^2Rҫ+bҫ+b⦹e	WVìg(hV,a1%8kU\/ӔMk	G}(H&:4ظdKcXަoR˼ҵםg0tP?_xb
3zra(/A <Db㑒M,Zuf,+]yxpW-zF7|i`@|Tņ	)U@ō^jm(H&:7+z׆ _S7("0^qKJ&-s:8b/7yf7MSf:=k n!/MUdLiKN5ӭCfaYz^z^p/VE|e^p/QkZֵkZֵkZֵkZֵkZֵkZֵkZֵc|F%{7ju/Uʫ"U#f־F{c~nv^S,R6a(k9%ꑃib61L>&!gXܼ'JvYf%X%yeo]/S7E0*gLq4DA0~:WҼM,Z羝*׉\7yzUQ4k
k1QSe!_"-^Iz-ǷgMS6=gR@(U^2Rڴ|{RLS71yoEM1ն70f
	K$8r+
To>|M-"0V.3mZ[3otqV['үR@qRE`xdǺÄgMܳ)Dib3Y&q6^nFEYzTCujA1Yᔢil$?x%r%i@9$JFviHHe啼iE^u|| ?` %g=ҋֲ>
 D=ҋִJ/Z`nI^$C8ǸQzדrNHڀ$C8D07'Izlx  HlL|{ilܳ)D3rKdD044?γ?γ5eK4DH D=<2M,aYz^Y[񒗘VEF%l/)38r񒖕^Y[!gTIr<Iܹlx9r˾J,3{XO£$HCr ǹ~C8xU:tR6b/Z{~#K#ǸED-'3HوkFE^#wAY6a*!)1dg73zÆ%WVjfnw;URސw´z:XpمMsW,;/i1 oMN)/3ie>ENXް	U啶7Ȏ%y!Aĕ*3;<dWVl8,8lP=U˛J,qHd.*<D7UsdgM+=(	.m%aJA/q!7?ǹSi.m%aJnz$lKIXR2}VHlHCq3ʛIsi+
W&$ K$a(	.m%aJބ	d i{3ʛIsi+
W'r\JɁ	AYJy1%ꑍʛIsi+
WsQ#f\J=Ug=0+kv<qXpل[['^9@ !"V=gdx9af+b6a(V nbs}o7EJ,(lR&3
ȳHوkj7zׯ8,)xW()xYfԕӌ&䩻StI/TܱjL啺pr񒖕^Y[r|&^Y[gyNޙǃ/EOA;zfwVr|&^Y[!g/8n,d.*<D7Vgܼ'3u.fVOuj?eHh3WҨ3?γHsx% ӌǸg9'`ogl^Izc#wzh37衳	BO<6b/ZIzcuwzg:i{|?Sf"'K#GuPgoCfmlyl^Hꞃ??ΰ6Hsx% ӌRm%aJބ$$al^Izc#(zǸg9'`o`oCfmlyl^UK+HzV97衳	BO<6b/Z*K#3γڼ盢%
7q(lP7gv4B %enNȅJ$UYzISKZEg#KgEY2nzׂ@p<$%JA=ID3nUYz\"033ie<ZIQ.jt(џmlyDM $@[`.ӭ2!|iVECRT֑YMbr4QzLR1@p<$%JA=ID3n-$ޮ4WeS"DXDճsT2<n0^Y[n0+kAYjHs犍"PoTh^FfVE4W3iu2|R5gYL{(H$(2"P&V0XL_"Ƒ(UdY5%M-i/$ުF'#KdɺK#dYbr4Qzׯ8,)}-9EGu(KxD`=ɬC!gml"D4DBWp%EEqJ"DTdX]Bx{! P,0HOL୨"7F"=ɬzg9iXfAc?` @rА IA%T0l**-2>
$7@A"3/8v\7IU)iRr-$ި]K/ڜ#NK-(+kg%A9(ltJpx%D7EB@2"B`I7i~/ZSxKMޠmNʫ"W7%M-y"7^]UC?îsҰ*<:ǺJ_qgf*->=2r-$ި]K/ڜ#NK-(+kg%A9(ltJpx%D7EB@2"B`I7i~/ZSxKMޠmNʫ"W7%M-y"7^Y6`saQggjʗF
A뚡tPل؆tPل[X:Vgdx86a*!6a(V ?γ?Z_ȳƊVv{N3sT2<aRCf+bCfmb3?αK.nuyem{xe(Y=^qg/Th3?ǺK!N04t	!%hn C8ǺK!n7y?KdD M`oyNޙǃIz-_<&@:E#tR/Z{R7>!E%M^OtJ;ilGx)*n/ZVbrz2=ISqzA=ISqz֒3C8=F"[_\nooֽISqzS/&i|ޝntņWE7W0LsYi/^r,"7gk#z5NjN[_7E8kםgMzׯ;/ Ȏg5;Ϭ%fOTDn'43
 ?γ_D=1̞$?vq.M*Cg==2>
$!թܼ'6q\ͤ)\zc<MPgYu/tCƑ(yg=_D=1̙<L8HوkH#?\G,,ggڴqzד%ꑌG~#3γ?_/T;犍"P8u.fVLI"@F`o)1y=^p;n?2$Ydd67EJyLnzבWu.fVK#3γZ[?%
<&7TوkȫR1??αR˛BOtRT^8~FE^#nE^#/TPr\J,nR˛BuYu/g&Yᔢid^Sguq%-*Cg1$7C RMl8D=4`o)y=^wD؎GuPg'K%q4#<GuPg%n&*g'q1S#7dg7i+q1S86gk#zLޭL/.777^褩kMYDϩ̾oN:Bb
f|+XezuӬj9V3y5r󑈽kIvYs'}LޭL/^3zkםdG
HֳrҝyMg3zω"7gurVGAY/EOA;zfwVr|&^Y[!?ŞEՅGHԂ^pɓR?8u.fVOuj?_D=1̞&?WҨ3:Ǹg9'q=^vDFE^OtF1>!8y`Gqg?:Z[8ԹIXR07$IAzד%ꑌG~#zf07q(lP"cuMּs6}^Agڴzד%ꑌG~#3?ܥ7Eml褩kp?ּGHּG^I뚡,(^Y[ܥ7Emb3N4[z)i+
W8櫺K(UsUJZUyelC.m*dA7=YzYtbA3UJK9>
%	!^DpuV]0C
aPHX'
¸T&
x:.Ba|GÃꬺR^
o<yqk#z=L9^PdkYxENo/)yMg3zω"7gsaQg~Ytb<UeҒT/<C8C' +xꬻ`*y0x:.B[3g<UJK!W@-A3osօ}S2y5r󑈽k垦^SYy/XJ"8RF;Tk>"^SY=L޳iꈍ8F^r1`hR|LtU3<d)Q?43
 ?γpLCp7`A?ܹ\J;Iz*,,?γ?^Sgtq;AtJ2R@q/r%a)t8y3sT2<dWV7"P&C3uV])/XAAn!cYtbO!3˛J=Ȕ	dww.m%Pgdx9siU啱˛JggjqAX-
.Rj?ՒoWUU7; $gKO' [# Y=ե0HqЉOuii`^pKW9WA%Un؈OUU3?Z^q/ZZxd3^ps)o-#UZZ}-9EJn؈OAYuX k              h:Җ:Җ:0                 ./usr/lpp/csd/sysctl/dodelvg.perl rl rl                              #! /usr/lpp/ssp/perl5/bin/perl 
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1994,2001 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#####################################################################
#
# Module:  dodelvg
#
#-------------------------------------------------------------------#
#                                                                   #
# Description: 
#     
# This command is used to remove a volume group on the primary node 
# or exportvg on the secondary node for a list of given empty_vgs.
#       
# Inputs:
#        a list of empty_vg names
#
#
# Outputs: 
#
#       Returns:
#           0 - if completed successfully 
#           1 - if bad command line or bad SDR return
#                                                   
# Syntax:
#       dodelvg vg_name[ vg_name2]}
#
# External Ref:                                  
#       sp_msg                                  
#       SDRGetObjects                         
#                                            
# Internal Ref:                             
#       none                               
#                                         
#####################################################################
#"@(#)98   1.4.1.1   src/csd/sysctl/dodelvg.perl, vsd, csd_rmoh, rmohs07a 1/18/01 09:00:02"

$curpath = $ENV{'PATH'};
$ENV{'PATH'} = "$curpath:/usr/sbin";

$MSGCAT="/usr/lib/nls/msg/\?/vsd.cat";
$SPMSG="/usr/lpp/csd/bin/spmsg_csd";

$MSGCAT2="/usr/lib/nls/msg/\?/vsdcmi.cat";
$SPMSG2 = "/usr/lpp/csd/bin/spmsg_vsdcmi";

#
$SDR_PATH="/usr/lpp/ssp/bin";
$VSD_Data_Dir="/usr/lpp/csd/vsdfiles";
$VSD_Bin_Dir="/usr/lpp/csd/bin";
$SYS_Bin_Dir="/usr/lpp/ssp/bin";
$VSD_ipaddr_file="/usr/lpp/csd/vsdfiles/VSd_ipaddr";

$USAGE="Usage: dodelvg vgname[ vgname2]}";

$progname = "dodelvg";
sub print_usage {
    system "$SPMSG VSDSYSCTLINF $MSGCAT VSDSYSCTLINF10 '$USAGE\n' ";
}

########################################################################
#
# Check for usage needed
#
########################################################################
if ($ARGV[0] eq "" || $ARGV[0] eq "-h") {
    &print_usage;
    if  ("-h" eq $ARGV[0]) {
       exit 0;
    }
    exit 1;
}

$my_node_number = `/usr/lpp/ssp/install/bin/node_number`;
chop($my_node_number);

$save_arguments = "";
$arglen = @ARGV;
foreach $targ (@ARGV) {
    $save_arguments = $save_arguments . ' ' . $targ;
    push (@vg_table, $targ)
}

# BODY
open (VSDGVG, "$SDR_PATH/SDRGetObjects VSD_Global_Volume_Group global_group_name local_group_name primary_node secondary_node server_list vsd_type | tail -n +2 |") || die "Cannot open VSDVGV";
while (<VSDGVG>) {
    s/^\s*//;
    push(@VSD_GVG, $_);
}
close(VSDGVG);

foreach $gvg_name (@vg_table) 
{
    foreach $vsd_gvg_entry (@VSD_GVG) 
    {
        ($gvgname, $localvgname, $primary, $secondary, $server_list, $vsd_type) =
                split(/\s+/, $vsd_gvg_entry);
        if (($primary eq $my_node_number)  && ($gvgname eq $gvg_name)) 
        { # I am the server for this VG
            $pv_list = "";
            # next look if any undefined hard disk
            # run lspv on it1n11:
            # hdisk0         000156670002244f    rootvg
            # hdisk1         abcd000054c23486    None
            open(HDISKS, "/usr/sbin/lspv  | ") ||  die "Cannot run lspv";
            while (<HDISKS>) 
            { s/^\s*//;
                ($t_pv_name, $pv_id, $t_pv_vg) = split(/\s+/);
                if ($localvgname eq $t_pv_vg) 
                { # If there are multiple adapters in the node mapping
                  # hdisks to the same LUN, we must only reducevg on one
                  # of the hdisks.
                  #
                  # I.E. we could have 
                  # hdisk90        00010246e316698d    junkvg         
                  # hdisk123       00010246e316698d    junkvg         

                  $Foundpvid = "false";
                  foreach $Processedpvid (@Processedpvid)
                  { if ($Processedpvid eq $pv_id)
                    { $Foundpvid = "true";
                      last;
                    }
                  }
                  if ($Foundpvid eq "false")
                  { $pv_list = "$pv_list $t_pv_name";
                    push(@Processedpvid, $pv_id);
                  }
                }
            }
            close(HDISKS);
	    if ($vsd_type eq "CVSD")
	    {
	      $rc = system("/usr/sbin/varyoffvg $localvgname > /dev/null") >> 8;
	      if ($rc != 0)
	      {
	         print "FAIL:$my_node_number:varyoffvg $localvgname\n";
		 last;
	      }
	      $rc = system("/usr/sbin/varyonvg $localvgname > /dev/null") >> 8;
	      if ($rc != 0)
	      {
		  print "FAIL:$my_node_number:varyonvg $localvgname\n";
		  last;
              }

            }
            $cmd = "/usr/sbin/reducevg -f $localvgname $pv_list >/dev/null";
            $rc = system("$cmd ") >> 8;
            if ($rc == 0) 
	    {
                print "OK:$my_node_number:reducevg -f  $localvgname $pv_list\n";
            }
            else 
	    {
                print "FAIL:$my_node_number:reducevg -f  $localvgname $pv_list\n";
            }
        }
	else
	{
           if (($secondary eq $my_node_number)  && ($gvgname eq $gvg_name)) 
           {
               # I am the secondary for this VG
               $cmd = "/usr/sbin/exportvg $localvgname >/dev/null";
               system("$cmd ");
               if ($? == 0) 
               {
                   print "OK:$my_node_number:$cmd\n";
               }
               else {
                   print "FAIL:$my_node_number:$cmd\n";
               }
           }
	   if ($vsd_type eq "CVSD")
	   {
	      @list = split(/:/, $server_list);
              foreach $i (@list)
	      {
	        if (($my_node_number eq $i) && ($gvgname eq $gvg_name))
	        {
	           $rc = system("/usr/sbin/varyoffvg $localvgname > /dev/null") >> 8;
	           if ($rc != 0)
		   {
		      print "FAIL:$my_node_number:varyoffvg $localvgname\n";
                   }
		   $cmd = "/usr/sbin/exportvg $localvgname >/dev/null";
		   system("$cmd ");
		   if ($? == 0)
		   {
		      print "OK:$my_node_number:$cmd\n";
                   }
		   else
		   {
                      print "FAIL:$my_node_number:$cmd\n";
                   }
                }
             }
          }

       }
   }
}
               
#end of BODY
exit 0;

rgumentk @           g  h:Җ:Җ:0         È  g      ./usr/lpp/csd/sysctl/doimportvg.perl rl                              #!/usr/lpp/ssp/perl5/bin/perl 
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1994,2001 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#####################################################################
#                                                                   #
# Module:  doimportvg.perl
#                                                                   #
# CPRY PGM
# 
#  Licensed Materials - Property of IBM
# 
#  5765-296 PSSP
# 
#  (C) Copyright IBM Corp. 1994, 1997 All Rights Reserved.
# 
#  US Government Users Restricted Rights - Use, duplication or
#  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# 
# CPRY
#                                                                   #
#-------------------------------------------------------------------#
#                                                                   #
# Description: 
#     
# This is the progam run on server node to mkvg and mklv.
# It gets exact argument as createvsd on client(CWS).
# After parse the argument, this program only does what it needs to do
# on the local node.
#
#       
# Inputs:
#        vg_name
#        pv_id
#        vsd_type      VSD|CVSD
#        pv_type       hdisk|vpath
#
# Outputs: 
#
#
#       Returns:                                                    #
#           0 - if completed successfully                           # 
#           1 - if bad command line or bad SDR return               #
#                                                                   #
#
# External Ref:                                                     #
#                                                                   #
# Internal Ref:                                                     #
#       none                                                        #
#                                                                   #  
#####################################################################
#"@(#)16   1.17.1.1   src/csd/sysctl/doimportvg.perl, vsd, csd_rmoh, rmohs07a 1/18/01 08:24:58"
#  This is an internal program.
#  It does not require NLS.
$curpath = $ENV{'PATH'};
$ENV{'PATH'} = "$curpath:/usr/sbin";
$VSD_cmd_dir = "/usr/lpp/csd/bin";
$LOG = "/usr/lpp/csd/vsdfiles/vsd_rollback";
`date >$LOG`;
open(LOGLOG, ">>$LOG") || die "cannot open LOG file";
select (LOGLOG); $| = 1;
select (STDERR); $| = 1;
select (STDOUT); $| = 1;

$vg_name = @ARGV[0];
$pv_id = @ARGV[1];
$vsd_type = @ARGV[2];
$pv_type = @ARGV[3];

$nn = `/usr/lpp/ssp/install/bin/node_number`;
chop($nn);
$my_node_number = $nn;

chop($t_pv_data =`lspv | grep $pv_id`);
print LOGLOG "vg_name=$vg_name pv_id=$pv_id\n";
if ($t_pv_data eq "" ) {
  chop(@hdisks = `lspv | grep " none "`);
  for ( $cnt = 0 ; $cnt <= $#hdisks ; $cnt++ ) {
    ($pv_name, $t_pv_id, $t_pv_vg) = split(/\s+/, $hdisks[$cnt]);
    chop($lqpv = `lqueryvg -Atp $pv_name 2>/dev/null | \
                  grep Physical | awk '{print \$2}'`);
    if ( $lqpv eq $pv_id) {
      system("chdev -l $pv_name -a pv=yes 2>&1");
      last
    }
  }
  if ($lqpv ne $pv_id)
  { # we could not find the pvid, maybe the disk isn't twin-tailed properly?
    print "FAIL:$my_node_number:pvid=$pv_id not found\n";
    exit(1);
  }
    
} else { ($pv_name, $t_pv_id, $t_pv_vg) = split(/\s+/, $t_pv_data); }

# Below we look for the volume group.  If it is found then  we try
# to do an importvg with the -L option.  If this fails then we will
# try to do the importvg with the -y option.  If the volume group
# is not found then the default is doing the importvg with the -y
# option.

system ("lsvg | grep -w $vg_name >/dev/null");

if ($? == 0) 
{ if ($vsd_type eq "CVSD")
  { exit;
  }
  $ivg_flag = "-L";
}
else 
{ $ivg_flag = "-y";
}

$time_of_day = `date`;
print LOGLOG "$time_of_day";

$ivg_rc = &import_vg($ivg_flag, $vg_name, $pv_name );

if ($ivg_rc > 0 && $ivg_flag == "-L") {
    $time_0 = time();
    system ("exportvg $vg_name 2>&1");
    print "OK:$my_node_number:exportvg $vg_name\n";
    $time_1 = time();
    &display_time_delta($time_0, $time_1);
    $ivg_flag = "-y";
    &import_vg($ivg_flag, $vg_name, $pv_name);
}

$time_of_day = `date`;
print LOGLOG "$time_of_day";
close(LOGLOG);


## Start of subroutines  ################################################

sub import_vg {

    local ($rc);

    # Since multiple exits where fails occur and one where
    # it exits on OK ... assume bad return code (rc).
    $rc = 1;

    $time_0 = time();
    system ("importvg $ivg_flag $vg_name $pv_name 2>&1");
    if ($? == 0) 
    { print "OK:$my_node_number:importvg $ivg_flag $vg_name $pv_name\n";
      if ($ivg_flag eq "-y")
      { system ("chvg -a n $vg_name  2>/dev/null");
        if ($? == 0) 
        { if ($vsd_type ne "CVSD")
          { print "OK:$my_node_number:chvg -a n $vg_name\n";

            # before we do varyoffvg,
            # we need to make sure to kill back groud syncvg
            $list=`ps -ef | grep "syncvg -v $vg_name" | grep -v grep`;
            if ($list ne "") 
            { $list =~ s/^\s*//;
              chop($list);
              ($owner, $pid, $junk) = split(/\s+/, $list);
              print "pid is $pid\n";
              `kill -9 $pid 1>/dev/null 2>/dev/null`
            }


            # get disk timestamp, createvsd2.perl depends on this output
            $timestamp=`$VSD_cmd_dir/readvg_timestamps $pv_name 2>/dev/null`;
            chop($timestamp);
            print "timestamp $my_node_number $vg_name $timestamp\n";


            # check if this importvg is related to vpath devices
            if ( $pv_type eq "vpath" )
            { system ("/usr/sbin/dpovgfix $vg_name 1>/dev/null");
              if ($? == 0)
              { print "OK:$my_node_number:dpovgfix $vg_name success\n";
              }
              else
              { print "FAIL:$my_node_number:dpovgfix $vg_name failed\n";
              }
            }

            system ("varyoffvg $vg_name 2>&1 ");
            if ($? == 0) 
            { $rc = 0;
              print "OK:$my_node_number:varyoffvg $vg_name\n";
              # we cannot punch OK to rollback file, otherwise the
              # dorollback will varyon the vg
            }
            else 
            { print "FAIL:$my_node_number:varyoffvg $vg_name\n";
              print LOGLOG"FAIL:$my_node_number:varyoffvg $vg_name\n";
            }
          }
          else  # CVSD
          { $rc=0; 
          }
        }
        else 
        { print "FAIL:$my_node_number:chvg -a n $vg_name\n";
          print LOGLOG "FAIL:$my_node_number:chvg -a n $vg_name\n";
        }
      }
      else # no need to do chvg -a n if we did importvg -L
      { $rc=0;
      }
    }
    else 
    { print "FAIL:$my_node_number:importvg $ivg_flag $vg_name $pv_name\n";
      if ( $ivg_flag eq "-y" ) 
      { print LOGLOG "FAIL:$my_node_number:importvg $ivg_flag $vg_name $pv_name\n";
      }
    }
    $time_1 = time();
    &display_time_delta($time_0, $time_1);
    return $rc;
}

sub display_time_delta {
    local ($tsec, $tminute);

    $tsec = $_[1] - $_[0];
    if ($tsec > 60) {
        $tminute = $tsec / 60;
        printf ("It took about %6.2f minutes.\n", $tminute);
    }
    else {
        if ( $tsec > 0 ) {
            print "It took about $tsec seconds.\n";
        }
    }
}
pkN )           	  h:Җ:Җ:0           	      ./usr/lpp/csd/sysctl/dovaryonvg.perl rl                              #!/usr/lpp/ssp/perl5/bin/perl
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1994,2001 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#####################################################################
#                                                                   #
# Module:  dovaryonvg.perl
#                                                                   #
# CPRY PGM
# 
#  Licensed Materials - Property of IBM
# 
#  5765-296 PSSP
# 
#  (C) Copyright IBM Corp. 1994, 1995 All Rights Reserved.
# 
#  US Government Users Restricted Rights - Use, duplication or
#  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# 
# CPRY
#                                                                   #
#-------------------------------------------------------------------#
#                                                                   #
# Description: 
#     
# This is the progam run on server node to mkvg and mklv.
# It gets exact argument as createvsd on client(CWS).
# After parse the argument, this program only does what it needs to do
# on the local node.
#
#       
# Inputs:
#        vg_name
# Outputs: 
#
#
#       Returns:                                                    #
#           0 - if completed successfully                           # 
#           1 - if bad command line or bad SDR return               #
#                                                                   #
#
# External Ref:                                                     #
#                                                                   #
# Internal Ref:                                                     #
#       none                                                        #
#                                                                   #  
#####################################################################

#  This is an internal program.
#  It does not require NLS.

$curpath = $ENV{'PATH'};
$ENV{'PATH'} = "$curpath:/usr/sbin";
$vg_name = @ARGV[0];
$option = @ARGV[1];

$my_node_number = `/usr/lpp/ssp/install/bin/node_number`;
chop($my_node_number);
system ("varyonvg $option $vg_name");
if ($? == 0) {
    print "OK:$my_node_number:varyonvg $option $vg_name\n";
}
else {
    print "FAIL:$my_node_number:varyonvg $option $vg_name\n";
}
|/@k) +           L  h:Җ:Җ:0           L      ./usr/lpp/csd/sysctl/getavailpv.perl rl                              #! /usr/lpp/ssp/perl5/bin/perl
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1994,2001 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#####################################################################
#                                                                   #
# Module: getavailpv.perl
#                                                                   #
# CPRY PGM
# 
#  Licensed Materials - Property of IBM
# 
#  5765-296 PSSP
# 
#  (C) Copyright IBM Corp. 1994, 1995 All Rights Reserved.
# 
#  US Government Users Restricted Rights - Use, duplication or
#  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# 
# CPRY
#                                                                   #
#-------------------------------------------------------------------#
#                                                                   #
# Description: 
#                                                                   #
# Inputs:                                                           #
#
#                                                                   #
# Outputs:                                                          #
#
#
#       Returns:                                                    #
#           0 - if completed successfully                           # 
#           1 - if bad command line or bad SDR return               #
#                                                                   #
# Syntax:                                                           #
#                                                                   #
#
#
# External Ref:                                                     #
#       sp_msg                                                      #
#       SDRChangeAttrValues                                         #
#       SDRGetObjects                                               #
#                                                                   #
# Internal Ref:                                                     #
#       none                                                        #
#                                                                   #  
#####################################################################
#"@(#)25   1.5.1.1   src/csd/sysctl/getavailpv.perl, vsd, csd_rmoh, rmohs07a 1/18/01 08:36:22"

# This is the program run on sysctl server node.

$curpath = $ENV{'PATH'};
$ENV{'PATH'} = "$curpath:/usr/sbin";
sub print_usage {
   print "Usage: getavailpv";
}
# print "ARGV = ", $#ARGV, "\n";

if ($ARGV[0] eq "-h") {
   &print_usage;
   exit ("-h" eq $ARGV[0]) ? 0 : 1;
}

# next look if any undefined hard disk
# run lspv on it1n11:
# hdisk0         000156670002244f    rootvg         
# hdisk1         abcd000054c23486    None
$found_undef = 0;
open(HDISKS, "/usr/sbin/lspv  | ") ||  die "Cannot run lspv";
while (<HDISKS>) {
    s/^\s*//;
    ($h_name, $addr, $tvg) = split(/\s+/);
    # Only search for free disks with a pvid.  We explicitly do not
    # want to return an hdisk that does not have a pvid, because it
    # may be part of a vpath. We also do not want to return any available
    # vpaths, because the user should explicitly specify a device. 
    if ( !($h_name =~ /vpath/) && ($addr ne "none") && ($tvg eq "None"))
    { $found_undef = 1;
      print "$h_name\n";
      last;
    }
}
if ($found_undef == 0) {
    print "None\n";
}
close(HDISKS);

failkJ}
= $ENV{'PATH'};
$ENV{'PATH'} = "$curpath:/usr/sbin";
sub print_usage {
   print "Usage: getavailpv";
}
# print "ARGV = ", $#ARGV, "\n";

if ($ARGV[0] eq "-h") {
   &print_usage;
   exit ("-h" eq $ARGV[0]) ? 0 : 1;
}

# next look if any undefined hard disk
# run lspv on it1n11:
# hdisk0         000156670002244f    rootvg         
# hdisk1         abcd000054c23486    None
$found_undef = 0;
open(HDISKS, "/usr/sbin/lspv  | ") ||  die "Cannot run lspv";
while (<HDISKS>) {
    s/^\s*//;
    ($h_name, $addr, $tvg) = split(/\s+/);
    # Only search for free disks with a pvid.  We explicitly do not
    # want to retur