1*12198SEiji.Ota@Sun.COM#!/sbin/sh 2*12198SEiji.Ota@Sun.COM# 3*12198SEiji.Ota@Sun.COM# CDDL HEADER START 4*12198SEiji.Ota@Sun.COM# 5*12198SEiji.Ota@Sun.COM# The contents of this file are subject to the terms of the 6*12198SEiji.Ota@Sun.COM# Common Development and Distribution License (the "License"). 7*12198SEiji.Ota@Sun.COM# You may not use this file except in compliance with the License. 8*12198SEiji.Ota@Sun.COM# 9*12198SEiji.Ota@Sun.COM# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*12198SEiji.Ota@Sun.COM# or http://www.opensolaris.org/os/licensing. 11*12198SEiji.Ota@Sun.COM# See the License for the specific language governing permissions 12*12198SEiji.Ota@Sun.COM# and limitations under the License. 13*12198SEiji.Ota@Sun.COM# 14*12198SEiji.Ota@Sun.COM# When distributing Covered Code, include this CDDL HEADER in each 15*12198SEiji.Ota@Sun.COM# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*12198SEiji.Ota@Sun.COM# If applicable, add the following below this CDDL HEADER, with the 17*12198SEiji.Ota@Sun.COM# fields enclosed by brackets "[]" replaced with your own identifying 18*12198SEiji.Ota@Sun.COM# information: Portions Copyright [yyyy] [name of copyright owner] 19*12198SEiji.Ota@Sun.COM# 20*12198SEiji.Ota@Sun.COM# CDDL HEADER END 21*12198SEiji.Ota@Sun.COM# 22*12198SEiji.Ota@Sun.COM 23*12198SEiji.Ota@Sun.COM# 24*12198SEiji.Ota@Sun.COM# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 25*12198SEiji.Ota@Sun.COM# 26*12198SEiji.Ota@Sun.COM 27*12198SEiji.Ota@Sun.COM# 28*12198SEiji.Ota@Sun.COM# RCM script to inform if RDSv3 is currently used 29*12198SEiji.Ota@Sun.COM# 30*12198SEiji.Ota@Sun.COMrcm_script_version=1 31*12198SEiji.Ota@Sun.COMrcm_script_func_info="RDSv3 (un)configuration rcm script" 32*12198SEiji.Ota@Sun.COMrcm_cmd_timeout=10 33*12198SEiji.Ota@Sun.COMrcm_resource_name=/devices/ib/rdsv3@0:rdsv3 34*12198SEiji.Ota@Sun.COM 35*12198SEiji.Ota@Sun.COMdo_scriptinfo() 36*12198SEiji.Ota@Sun.COM{ 37*12198SEiji.Ota@Sun.COM printf "rcm_script_version=%d\n" $rcm_script_version; 38*12198SEiji.Ota@Sun.COM printf "rcm_script_func_info=$rcm_script_func_info\n"; 39*12198SEiji.Ota@Sun.COM printf "rcm_cmd_timeout=%d\n" $rcm_cmd_timeout; 40*12198SEiji.Ota@Sun.COM exit 0; 41*12198SEiji.Ota@Sun.COM} 42*12198SEiji.Ota@Sun.COM 43*12198SEiji.Ota@Sun.COMdo_register() 44*12198SEiji.Ota@Sun.COM{ 45*12198SEiji.Ota@Sun.COM printf "rcm_resource_name=%s\n" $rcm_resource_name; 46*12198SEiji.Ota@Sun.COM exit 0; 47*12198SEiji.Ota@Sun.COM} 48*12198SEiji.Ota@Sun.COM 49*12198SEiji.Ota@Sun.COMdo_resourceinfo() 50*12198SEiji.Ota@Sun.COM{ 51*12198SEiji.Ota@Sun.COM if [ x"$1" = x"/devices/ib/rdsv3@0:rdsv3" ] 52*12198SEiji.Ota@Sun.COM then 53*12198SEiji.Ota@Sun.COM printf "rcm_resource_usage_info=RDSv3 IB device 0\n"; 54*12198SEiji.Ota@Sun.COM exit 0; 55*12198SEiji.Ota@Sun.COM else 56*12198SEiji.Ota@Sun.COM printf "rcm_failure_reason=Unknown RDSv3 device\n"; 57*12198SEiji.Ota@Sun.COM exit 3; 58*12198SEiji.Ota@Sun.COM fi 59*12198SEiji.Ota@Sun.COM} 60*12198SEiji.Ota@Sun.COM 61*12198SEiji.Ota@Sun.COMdo_queryremove() 62*12198SEiji.Ota@Sun.COM{ 63*12198SEiji.Ota@Sun.COM output=`/usr/sbin/fuser $rcm_resource_name 2>&1` 64*12198SEiji.Ota@Sun.COM ret=$? 65*12198SEiji.Ota@Sun.COM 66*12198SEiji.Ota@Sun.COM sockrds=`echo "$output" | grep 'sockrds'` 67*12198SEiji.Ota@Sun.COM 68*12198SEiji.Ota@Sun.COM if [ $ret -eq 0 ] && [ ! -z "$sockrds" ] 69*12198SEiji.Ota@Sun.COM then 70*12198SEiji.Ota@Sun.COM printf "rcm_log_warn=RDSv3 is being used currently. " 71*12198SEiji.Ota@Sun.COM printf "Please stop processes currently running on it " 72*12198SEiji.Ota@Sun.COM printf "before un-configuring IB HCA/RDSv3.\n"; 73*12198SEiji.Ota@Sun.COM printf "rcm_failure_reason=RDSv3 is being used on this system\n"; 74*12198SEiji.Ota@Sun.COM exit 3; 75*12198SEiji.Ota@Sun.COM elif [ $ret -ne 0 ] 76*12198SEiji.Ota@Sun.COM then 77*12198SEiji.Ota@Sun.COM printf "rcm_log_warn='fuser $rcm_resource_name' command failed." 78*12198SEiji.Ota@Sun.COM printf "rcm_failure_reason='fuser $rcm_resource_name' command " 79*12198SEiji.Ota@Sun.COM printf "failed.\n"; 80*12198SEiji.Ota@Sun.COM exit 1; 81*12198SEiji.Ota@Sun.COM fi 82*12198SEiji.Ota@Sun.COM exit 0; 83*12198SEiji.Ota@Sun.COM} 84*12198SEiji.Ota@Sun.COM 85*12198SEiji.Ota@Sun.COMdo_preremove() 86*12198SEiji.Ota@Sun.COM{ 87*12198SEiji.Ota@Sun.COM exit 0; 88*12198SEiji.Ota@Sun.COM} 89*12198SEiji.Ota@Sun.COM 90*12198SEiji.Ota@Sun.COMdo_undoremove() 91*12198SEiji.Ota@Sun.COM{ 92*12198SEiji.Ota@Sun.COM exit 0; 93*12198SEiji.Ota@Sun.COM} 94*12198SEiji.Ota@Sun.COM 95*12198SEiji.Ota@Sun.COMdo_postremove() 96*12198SEiji.Ota@Sun.COM{ 97*12198SEiji.Ota@Sun.COM exit 0; 98*12198SEiji.Ota@Sun.COM} 99*12198SEiji.Ota@Sun.COM 100*12198SEiji.Ota@Sun.COMcase "$1" in 101*12198SEiji.Ota@Sun.COM scriptinfo) do_scriptinfo;; 102*12198SEiji.Ota@Sun.COM register) do_register;; 103*12198SEiji.Ota@Sun.COM resourceinfo) do_resourceinfo $2;; 104*12198SEiji.Ota@Sun.COM queryremove) do_queryremove $2;; 105*12198SEiji.Ota@Sun.COM preremove) do_preremove $2;; 106*12198SEiji.Ota@Sun.COM undoremove) do_undoremove $2;; 107*12198SEiji.Ota@Sun.COM postremove) do_postremove $2;; 108*12198SEiji.Ota@Sun.COM *) echo Unknown option $1;; 109*12198SEiji.Ota@Sun.COMesac 110