diff options
author | bde <bde@FreeBSD.org> | 1994-12-16 15:59:44 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1994-12-16 15:59:44 +0000 |
commit | 4b9c4e466a1b0c6bc1b1fa5f0684ae1c0c7462d0 (patch) | |
tree | 94062a4c5ccb738c31cbd787ee60ae2bc429c333 /etc/etc.i386 | |
parent | 353b6fc6d3b55f9b568fb3b1eea53d8d590479da (diff) | |
download | FreeBSD-src-4b9c4e466a1b0c6bc1b1fa5f0684ae1c0c7462d0.zip FreeBSD-src-4b9c4e466a1b0c6bc1b1fa5f0684ae1c0c7462d0.tar.gz |
Add support for sliced disk devices ssd*, svn*, swd*. The `s' at the start
of these names is so that they can be distinguished in MAKEDEV until the
non-sliced devices go away.
Diffstat (limited to 'etc/etc.i386')
-rw-r--r-- | etc/etc.i386/MAKEDEV | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/etc/etc.i386/MAKEDEV b/etc/etc.i386/MAKEDEV index fda819c..71fff62 100644 --- a/etc/etc.i386/MAKEDEV +++ b/etc/etc.i386/MAKEDEV @@ -70,12 +70,29 @@ # socksys iBCS2 socket system driver # vat VAT compatibility audio driver (requires snd*) # -# $Id: MAKEDEV,v 1.58 1994/12/06 23:06:10 ache Exp $ +# $Id: MAKEDEV,v 1.59 1994/12/08 00:44:55 ache Exp $ # PATH=/sbin:/bin/:/usr/bin:/usr/sbin: umask 77 +# Convert integer to partition number +dkitop() { + local p + + case $1 in + 0) p=a;; 1) p=b;; 2) p=c;; 3) p=d;; 4) p=e;; 5) p=f;; 6) p=g;; 7) p=h;; + default) p="?";; + esac + echo $p +} + +# Convert disk (type, unit, slice, partition) to minor number +dkminor() +{ + echo $((32 * 65536 * $1 + 8 * $2 + 65536 * $3 + $4)) +} + # Convert the last character of a tty name to a minor number. ttyminor() { @@ -90,6 +107,12 @@ ttyminor() echo $m } +# Raw partition for disks +dkrawpart=2 + +# Raw slice for disks +dkrawslice=0 + for i do case $i in @@ -314,6 +337,48 @@ sd*|vn*|wd*) umask 77 ;; +# Sliced disks. +ssd*|svn*|swd*) + umask 37 + case $i in + ssd*) name=sd; blk=4; chr=13;; + swd*) name=wd; blk=0; chr=3;; + svn*) name=vn; blk=15; chr=43;; + esac + unit=`expr $i : '...\(.*\)'` + rm -f $name$unit* r$name$unit* + case $unit in + 0|1|2|3|4|5|6) + # Whole disk is on (non-)slice 0, (non-)partition C. + minor=`dkminor 0 $unit $dkrawslice $dkrawpart` + mknod ${name}${unit} b $blk $minor + mknod r${name}${unit} c $chr $minor + for slice in 1 2 3 4 + do + for part in 0 1 2 3 4 5 6 7 + do + minor=`dkminor 0 $unit $slice $part` + partname=`dkitop $part` + mknod ${name}${unit}s${slice}${partname} \ + b $blk $minor + mknod r${name}${unit}s${slice}${partname} \ + c $chr $minor + done + partname=`dkitop $dkrawpart` + ln ${name}${unit}s${slice}${partname} \ + ${name}${unit}s${slice} + ln r${name}${unit}s${slice}${partname} \ + r${name}${unit}s${slice} + done + chgrp operator ${name}${unit}* r${name}${unit}* + ;; + *) + echo bad unit for disk in: $i + ;; + esac + umask 77 + ;; + uk*) unit=`expr $i : 'uk\(.*\)'` rm -f uk$unit |