1
0
Files
irix-657m-src/eoe/cmd/dev/DKS_base
2022-09-29 17:59:04 +03:00

92 lines
3.1 KiB
Bash
Executable File

#!/sbin/ksh
mk_ctlrnumber()
{
# construct scsi controller number part of minor number from hinv info
number=$(( ($1 / 10) * 8 + $1 % 10))
}
# A function for clarity. install is used because it will not
# remake devices if they are already correct (saving time)
# and will preserve local modifications to ownership and modes.
mknod()
{
if [ $2 = c ]; then typ=-chr; else typ=-blk; fi
install -root "" -rawidb "" -f . -m 600 $typ $3,$4 $1
}
/sbin/hinv | \
sed -n -e '/^Integral SCSI controller /'p -e '/^GIO SCSI controller /'p | \
sed 's/://g' | \
while read a b c ctlr d ; do
mk_ctlrnumber $ctlr
for targ in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
for i in 0 1 6 7 15; do
minor=$(( $i + $targ * 16 + $number * 256));
mknod dsk/dks${ctlr}d${targ}s$i b ${B_DKS} $minor &
mknod rdsk/dks${ctlr}d${targ}s$i c ${C_DKS} $minor &
done;
minor=$(( 8 + $targ * 16 + $number * 256));
mknod rdsk/dks${ctlr}d${targ}vh c ${C_DKS} $minor &
minor=$(( 10 + $targ * 16 + $number * 256));
mknod rdsk/dks${ctlr}d${targ}vol c ${C_DKS} $minor &
wait;
done;
done
/sbin/hinv -c disk | grep lun | egrep 'Disk|PC Card' | sed 's/[:,]//g' | \
while read a b c targ l lun d e f ctlr g; do
mk_ctlrnumber $ctlr
for i in 0 1 6 7 15; do
minor=$(( $i + $targ * 16 + $number * 256));
minor=$(( $minor + $lun * 32768));
mknod dsk/dks${ctlr}d${targ}l${lun}s$i b ${B_DKS} $minor &
mknod rdsk/dks${ctlr}d${targ}l${lun}s$i c ${C_DKS} $minor &
done;
minor=$(( 8 + $targ * 16 + $number * 256));
minor=$(( $minor + $lun * 32768));
mknod rdsk/dks${ctlr}d${targ}l${lun}vh c ${C_DKS} $minor &
minor=$(( 10 + $targ * 16 + $number * 256));
minor=$(( $minor + $lun * 32768));
mknod rdsk/dks${ctlr}d${targ}l${lun}vol c ${C_DKS} $minor &
wait;
done
/sbin/hinv -c scsi | grep "RAID controller" | sed 's/://g' | \
while read a b c targ d e f ctlr g; do
mk_ctlrnumber $ctlr
for lun in 0 1 2 3 4 5; do
for i in 0 1 6 7 15; do
minor=$(( $i + $targ * 16 + $number * 256));
minor=$(( $minor + $lun * 32768));
mknod dsk/dks${ctlr}d${targ}l${lun}s$i b ${B_DKS} $minor &
mknod rdsk/dks${ctlr}d${targ}l${lun}s$i c ${C_DKS} $minor &
done;
minor=$(( 8 + $targ * 16 + $number * 256));
minor=$(( $minor + $lun * 32768));
mknod rdsk/dks${ctlr}d${targ}l${lun}vh c ${C_DKS} $minor &
minor=$(( 10 + $targ * 16 + $number * 256));
minor=$(( $minor + $lun * 32768));
mknod rdsk/dks${ctlr}d${targ}l${lun}vol c ${C_DKS} $minor &
wait;
done;
done
# Only make RAID nodes for those devices that are attached and turned on.
/sbin/hinv -c disk | grep '^Disk drive: .* on SCSI controller .*: RAID$' | \
sed 's/://g' | \
while read a b c targ d e f ctlr g ; do
mk_ctlrnumber $ctlr
mid=dks${ctlr}d${targ};
for i in 0 1 2 6 7 15; do
minor=$(( $targ * 16 + $number * 256 + $i));
mknod rad${ctlr}d${targ}s$i b ${B_RAD} $minor &
mknod rad${ctlr}d${targ}s$i c ${C_RAD} $minor &
done;
minor=$(( $targ * 16 + $number * 256 + 8));
mknod rad${ctlr}d${targ}vh c ${C_RAD} $minor &
minor=$(( $targ * 16 + $number * 256 + 10));
mknod rad${ctlr}d${targ}vol c ${C_RAD} $minor &
wait;
done