#!/bin/bash # # Copyright (c) 2006 Mellanox Technologies. All rights reserved. # # This Software is licensed under one of the following licenses: # # 1) under the terms of the "Common Public License 1.0" a copy of which is # available from the Open Source Initiative, see # http://www.opensource.org/licenses/cpl.php. # # 2) under the terms of the "The BSD License" a copy of which is # available from the Open Source Initiative, see # http://www.opensource.org/licenses/bsd-license.php. # # 3) under the terms of the "GNU General Public License (GPL) Version 2" a # copy of which is available from the Open Source Initiative, see # http://www.opensource.org/licenses/gpl-license.php. # # Licensee has the right to choose one of the above licenses. # # Redistributions of source code must retain the above copyright # notice and one of the license notices. # # Redistributions in binary form must reproduce both the above copyright # notice, one of the license notices in the documentation # and/or other materials provided with the distribution. # # $Id$ # shopt -s nullglob prog=@CMAKE_INSTALL_FULL_SBINDIR@/srp_daemon params=("$@") ibdir="/sys/class/infiniband" rescan_interval=60 pids=() pidfile="@CMAKE_INSTALL_FULL_RUNDIR@/srp_daemon.sh.pid" mypid=$$ trap_handler() { if [ "${#pids[@]}" ]; then kill -15 "${pids[@]}" > /dev/null 2>&1 wait "${pids[@]}" fi logger -i -t "$(basename "$0")" "killing $prog." /bin/rm -f "$pidfile" exit 0 } # Check if there is another copy running of srp_daemon.sh if [ -f "$pidfile" ]; then if [ -e "/proc/$(cat "$pidfile" 2>/dev/null)/status" ]; then echo "$(basename "$0") is already running. Exiting." exit 1 else /bin/rm -f "$pidfile" fi fi if ! echo $mypid > "$pidfile"; then echo "Creating $pidfile for pid $mypid failed" exit 1 fi trap 'trap_handler' 2 15 while [ ! -d ${ibdir} ] do sleep 30 done for d in ${ibdir}_mad/umad*; do hca_id="$(<"$d/ibdev")" port="$(<"$d/port")" add_target="${ibdir}_srp/srp-${hca_id}-${port}/add_target" if [ -e "${add_target}" ]; then ${prog} -e -c -n -i "${hca_id}" -p "${port}" -R "${rescan_interval}" "${params[@]}" >/dev/null 2>&1 & pids+=($!) fi done wait