cr_udev.sh

#!/bin/sh

# generate UDEV rules for ScaleIO devices suitable for ASM
#
# use these commands to restart rules processor:
# /sbin/udevadm control --reload-rules
# /sbin/udevadm trigger


sd_list=$(ls -1 /dev/sd*? )
owner=grid
group=asmadmin
diskname=disk
base=0

#
# process command line arguments
#

if ( ! getopts "b:d:g:l:o:" opt); then
        echo "Usage: `basename $0` options (-d diskname) (-g group) (-l device_list) (-o owner)";
        exit $E_OPTERROR;
fi

while getopts "b:d:g:l:o:" opt; do
     case $opt in
         b) base=$OPTARG;;
         d) diskname=$OPTARG;;
         g) group=$OPTARG;;
         l) device_list=$OPTARG;;
         o) owner=$OPTARG;;
     esac
done

let i=$base

for sd in ${sd_list}
do
  basesd=`echo $sd | cut -f3 -d"/"`
##  echo "considering device $basesd"
  ##if [[ $device_list =~ (^| )$basesd($| ) ]] || [[ ${#device_list} -lt 1 ]]
  if [[ ",$device_list," = *",$basesd,"* ]] || [[ ${#device_list} -lt 1 ]]
  then
    #myscid=`/opt/emc/scaleio/sdc/bin/drv_cfg --query_block_device_id --block_device ${sd}`
    myscid=`/usr/lib/udev/scsi_id -g -u -d ${sd}`
    printf "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM=\"/usr/lib/udev/scsi_id -g -u -d /dev/%%k\", RESULT==\"%s\", SYMLINK+=\"oracleasm/$diskname%02d\", OWNER=\"$owner\", GROUP=\"$group\", MODE=\"0660\"\n" ${myscid} $i
    let i=i+1
  fi
done