--- mkinitrd-5.1.19.6/mkinitrd.emc 2007-07-12 10:06:31.000000000 -0400 +++ mkinitrd-5.1.19.6/mkinitrd 2007-07-12 10:06:40.000000000 -0400 @@ -178,14 +178,29 @@ return 1 } +get_disk_vendor() { + local vendor=$(scsi_id -g -u -s ${1#/sys} -x | grep ^ID_VENDOR= | \ + sed 's/^ID_VENDOR=//') + [ -n "$vendor" ] || vendor=$(scsi_id -g -ppre-spc3-83 -u -s ${1#/sys} -x \ + | grep ^ID_VENDOR= | sed 's/^ID_VENDOR=//') + [ -z "$vendor" ] && return 1 + echo ${vendor} +} + # this sucks; we need a generic way to get the hardware handler is_emc() { - major=$(echo $1 | cut -d: -f1) - minor=$(echo $1 | cut -d: -f2) + local syspath=$1 + local devpath=$2 + local majmin=$(cat ${syspath}/dev) + local major=$(echo $1 | cut -d: -f1) + local minor=$(echo $1 | cut -d: -f2) if dmsetup -C -j $major -m $minor table 2>/dev/null | \ grep -v "No devices found" | grep -q " emc " ; then return 0 fi + if [ "$(get_disk_vendor ${syspath})" == "DGC" ]; then + return 0 + fi return 1 } @@ -194,12 +209,14 @@ local arg2="$2" local majmin=$(cat $1/dev) local ret=1 - if is_mpath ${majmin} ; then - arg2=yes - if is_emc ${majmin} ; then + if [ "${arg2}" == "yes" ]; then + if is_emc ${1} ${devpath} ; then ret=0 fi fi + if is_mpath ${majmin} ; then + arg2=yes + fi slaves="$1/slaves/*" for slave in $slaves ; do [ -e $slave ] || continue