c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#!/sbin/sh
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# CDDL HEADER START
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# The contents of this file are subject to the terms of the
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# Common Development and Distribution License (the "License").
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# You may not use this file except in compliance with the License.
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# or http://www.opensolaris.org/os/licensing.
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# See the License for the specific language governing permissions
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# and limitations under the License.
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# When distributing Covered Code, include this CDDL HEADER in each
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# If applicable, add the following below this CDDL HEADER, with the
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# fields enclosed by brackets "[]" replaced with your own identifying
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# information: Portions Copyright [yyyy] [name of copyright owner]
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# CDDL HEADER END
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota# RCM script to inform if RDSv3 is currently used
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota#
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otarcm_script_version=1
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otarcm_script_func_info="RDSv3 (un)configuration rcm script"
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otarcm_cmd_timeout=10
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otarcm_resource_name=/devices/ib/rdsv3@0:rdsv3
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otado_scriptinfo()
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota{
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_script_version=%d\n" $rcm_script_version;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_script_func_info=$rcm_script_func_info\n";
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_cmd_timeout=%d\n" $rcm_cmd_timeout;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 0;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota}
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otado_register()
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota{
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_resource_name=%s\n" $rcm_resource_name;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 0;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota}
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otado_resourceinfo()
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota{
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota if [ x"$1" = x"/devices/ib/rdsv3@0:rdsv3" ]
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota then
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_resource_usage_info=RDSv3 IB device 0\n";
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 0;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota else
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_failure_reason=Unknown RDSv3 device\n";
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 3;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota fi
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota}
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otado_queryremove()
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota{
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota output=`/usr/sbin/fuser $rcm_resource_name 2>&1`
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota ret=$?
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota sockrds=`echo "$output" | grep 'sockrds'`
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota if [ $ret -eq 0 ] && [ ! -z "$sockrds" ]
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota then
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_log_warn=RDSv3 is being used currently. "
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "Please stop processes currently running on it "
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "before un-configuring IB HCA/RDSv3.\n";
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_failure_reason=RDSv3 is being used on this system\n";
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 3;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota elif [ $ret -ne 0 ]
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota then
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_log_warn='fuser $rcm_resource_name' command failed."
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "rcm_failure_reason='fuser $rcm_resource_name' command "
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota printf "failed.\n";
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 1;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota fi
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 0;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota}
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otado_preremove()
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota{
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 0;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota}
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otado_undoremove()
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota{
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 0;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota}
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otado_postremove()
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota{
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota exit 0;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota}
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otacase "$1" in
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota scriptinfo) do_scriptinfo;;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota register) do_register;;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota resourceinfo) do_resourceinfo $2;;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota queryremove) do_queryremove $2;;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota preremove) do_preremove $2;;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota undoremove) do_undoremove $2;;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota postremove) do_postremove $2;;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Ota *) echo Unknown option $1;;
c0dd49bdd68c0d758a67d56f07826f3b45cfc664Eiji Otaesac