Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Nov 1997 03:46:23 -0800 (PST)
From:      Julian Elischer <julian@whistle.com>
To:        hackers@freebsd.org
Subject:   DEVFS/SLICE passes milestone
Message-ID:  <Pine.BSF.3.95.971126032124.2992A-200000@current1.whistle.com>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
San francisco, Early Tuesday morning,

DEVFS passed a critical milestone today when my PC here booted up a kernel
using only DEVFS based devices. The kernel used DEVFS to find the root
device and mount it, finding it by NAME (sd1s1a) rather than by
major/minor numbers. The disk devices were all created dynamically using
the "slice" subsystem so that all IO to the disks was flowing through the
SLICE system's "IOreq" entrypoints rather than the older disk 'strategy()'
entrypoints. 

The disk partitionning is being handled by separate MBR and DISKLABEL
SLICE objects, rather than by the older disk 'slicing' code.
The drivers have SLICE entrypoints added, in addition to the usual
entrypoints, which are no longer being used.
teh SLICE code is also known as "storage layering".

On my system here, the lowest layer is the driver,
which exports a single slice. The driver does not know about any
partitioning (in the new code that is). It does IO requiests and that is
all. 
The next layer is an MBR type object, that takes the single slice
exported by the driver and exports in turn N slices, one for each 
MBR (fdisk) partition. On each disk, One of these slices is in turn
passed to a DISKLABEL object, that takes in a single MBR slice
and exports a slice for each disklabel partition. All these slices
regardless of layer are identical in behaviour.
the top layer HAPPENS to have filesystems on each slice.

since All disklslices are now handled by the same code
their major numbers are all the same. The minor numbers are
allocated dynamically as increasing integers.
i.e. SLICE code NEEDS DEVFS.

yes I know the dates and link counts are wrong..

next steps:
1/ clean it up
2/ figure out why I suddenly have an extra swap device (a worry)
3/ fix dates and links
4/ make all major numbers irrelevant by bypassing the devsw tables.
4a/ Allocate majors dynamically (used only to allow a device
    to be shown to be unique)
5/ remove all references to dev_t in the kernel :-)

julian


attached find 'mount' output and disk related lines from 'ls -l /dev'



[-- Attachment #2 --]

brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0
brw-------   3 root  kmem       14,   7 Nov 26 03:11 fd0.1200
brw-------   3 root  kmem       14,   6 Nov 26 03:11 fd0.1440
brw-------   3 root  kmem       14,   5 Nov 26 03:11 fd0.1480
brw-------   3 root  kmem       14,   4 Nov 26 03:11 fd0.1720
brw-------   3 root  kmem       14,  10 Nov 26 03:11 fd0.720
brw-------   3 root  kmem       14,   9 Nov 26 03:11 fd0.800
brw-------   3 root  kmem       14,   8 Nov 26 03:11 fd0.820
brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0a
brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0b
brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0c
brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0d
brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0e
brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0f
brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0g
brw-------  27 root  kmem       14,   3 Nov 26 03:11 fd0h
brw-------   3 root  kmem       14,  11 Dec 31  1969 fd0s1
brw-------   3 root  kmem       14,  12 Dec 31  1969 fd0s1a
brw-------   3 root  kmem       14,  13 Dec 31  1969 fd0s1b
brw-------   3 root  kmem       14,  14 Dec 31  1969 fd0s2
brw-------   3 root  kmem       14,  15 Dec 31  1969 fd0s4
brw-------   3 root  kmem       14,  16 Dec 31  1969 fd0s4a
brw-------   3 root  kmem       14,  17 Dec 31  1969 fd0s4b
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0
crw-------   3 root  kmem       20,   7 Nov 26 03:11 rfd0.1200
crw-------   3 root  kmem       20,   6 Nov 26 03:11 rfd0.1440
crw-------   3 root  kmem       20,   5 Nov 26 03:11 rfd0.1480
crw-------   3 root  kmem       20,   4 Nov 26 03:11 rfd0.1720
crw-------   3 root  kmem       20,  10 Nov 26 03:11 rfd0.720
crw-------   3 root  kmem       20,   9 Nov 26 03:11 rfd0.800
crw-------   3 root  kmem       20,   8 Nov 26 03:11 rfd0.820
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0a
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0b
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0c
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0d
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0e
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0f
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0g
crw-------  27 root  kmem       20,   3 Nov 26 03:11 rfd0h
crw-------   3 root  kmem       20,  11 Dec 31  1969 rfd0s1
crw-------   3 root  kmem       20,  12 Dec 31  1969 rfd0s1a
crw-------   3 root  kmem       20,  13 Dec 31  1969 rfd0s1b
crw-------   3 root  kmem       20,  14 Dec 31  1969 rfd0s2
crw-------   3 root  kmem       20,  15 Dec 31  1969 rfd0s4
crw-------   3 root  kmem       20,  16 Dec 31  1969 rfd0s4a
crw-------   3 root  kmem       20,  17 Dec 31  1969 rfd0s4b
crw-------   3 root  kmem       20,   0 Nov 26 03:11 rsd0
crw-------   3 root  wheel      13, 0x20000000 Nov 26 03:11 rsd0.ctl
crw-------   3 root  kmem       20,  29 Dec 31  1969 rsd0s1
crw-------   3 root  kmem       20,  30 Dec 31  1969 rsd0s2
crw-------   3 root  kmem       20,  31 Dec 31  1969 rsd0s2a
crw-------   3 root  kmem       20,  32 Dec 31  1969 rsd0s2b
crw-------   3 root  kmem       20,  33 Dec 31  1969 rsd0s2d
crw-------   3 root  kmem       20,   1 Nov 26 03:11 rsd1
crw-------   3 root  wheel      13, 0x20000008 Nov 26 03:11 rsd1.ctl
crw-------   3 root  kmem       20,  22 Dec 31  1969 rsd1s1
crw-------   3 root  kmem       20,  23 Dec 31  1969 rsd1s1a
crw-------   3 root  kmem       20,  24 Dec 31  1969 rsd1s1b
crw-------   3 root  kmem       20,  25 Dec 31  1969 rsd1s1d
crw-------   3 root  kmem       20,  26 Dec 31  1969 rsd1s1e
crw-------   3 root  kmem       20,  27 Dec 31  1969 rsd1s1f
crw-------   3 root  kmem       20,  28 Dec 31  1969 rsd1s1g
crw-------   3 root  kmem       20,   2 Nov 26 03:11 rsd2
crw-------   3 root  wheel      13, 0x20000010 Nov 26 03:11 rsd2.ctl
crw-------   3 root  kmem       20,  18 Dec 31  1969 rsd2s1
crw-------   3 root  kmem       20,  19 Dec 31  1969 rsd2s1b
crw-------   3 root  kmem       20,  20 Dec 31  1969 rsd2s1d
crw-------   3 root  kmem       20,  21 Dec 31  1969 rsd2s1e
brw-------   3 root  kmem       14,   0 Nov 26 03:11 sd0
brw-------   3 root  kmem       14,  29 Dec 31  1969 sd0s1
brw-------   3 root  kmem       14,  30 Dec 31  1969 sd0s2
brw-------   3 root  kmem       14,  31 Dec 31  1969 sd0s2a
brw-------   3 root  kmem       14,  32 Dec 31  1969 sd0s2b
brw-------   3 root  kmem       14,  33 Dec 31  1969 sd0s2d
brw-------   3 root  kmem       14,   1 Nov 26 03:11 sd1
brw-------   3 root  kmem       14,  22 Dec 31  1969 sd1s1
brw-------   3 root  kmem       14,  23 Dec 31  1969 sd1s1a
brw-------   3 root  kmem       14,  24 Dec 31  1969 sd1s1b
brw-------   3 root  kmem       14,  25 Dec 31  1969 sd1s1d
brw-------   3 root  kmem       14,  26 Dec 31  1969 sd1s1e
brw-------   3 root  kmem       14,  27 Dec 31  1969 sd1s1f
brw-------   3 root  kmem       14,  28 Dec 31  1969 sd1s1g
brw-------   3 root  kmem       14,   2 Nov 26 03:11 sd2
brw-------   3 root  kmem       14,  18 Dec 31  1969 sd2s1
brw-------   3 root  kmem       14,  19 Dec 31  1969 sd2s1b
brw-------   3 root  kmem       14,  20 Dec 31  1969 sd2s1d
brw-------   3 root  kmem       14,  21 Dec 31  1969 sd2s1e

/dev/sd1s1a on / (local)
devfs on dummy_mount (local)
devfs on /dev (local)
/dev/sd0s2d on /usr (local, noatime)
devfs on /devs (local)
/dev/sd1s1d on /tmp (asynchronous, local, noatime)
/dev/sd1s1e on /var (local)
/dev/sd2s1d on /usr/ports (asynchronous, local, noatime)
/dev/sd1s1g on /usr/ports/distfiles (asynchronous, NFS exported, local, noatime)
/dev/sd2s1e on /usr/src (asynchronous, local, noatime)
/dev/sd1s1f on /usr/obj (asynchronous, local, noatime)
/dev/sd0s2a on /usr/obj/usr/src/tmp (asynchronous, local, noatime)
procfs on /proc (local)

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95.971126032124.2992A-200000>