<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/miscfs/specfs/specdev.h, branch main</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=main</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>1999-08-08T18:43:05Z</updated>
<entry>
<title>Decommision miscfs/specfs/specdev.h.  Most of it goes into &lt;sys/conf.h&gt;,</title>
<updated>1999-08-08T18:43:05Z</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>1999-08-08T18:43:05Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=0ef1c82630b9fa5b376abcaf8721a561ae5f7c24'/>
<id>urn:sha1:0ef1c82630b9fa5b376abcaf8721a561ae5f7c24</id>
<content type='text'>
a few lines into &lt;sys/vnode.h&gt;.

Add a few fields to struct specinfo, paving the way for the fun part.
</content>
</entry>
<entry>
<title>Now a dev_t is a pointer to struct specinfo which is shared by all specdev</title>
<updated>1999-07-20T09:47:55Z</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>1999-07-20T09:47:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=698bfad7f2f73434a1f39b7df74cedb551e8cab6'/>
<id>urn:sha1:698bfad7f2f73434a1f39b7df74cedb551e8cab6</id>
<content type='text'>
vnodes referencing this device.

Details:
        cdevsw-&gt;d_parms has been removed, the specinfo is available
        now (== dev_t) and the driver should modify it directly
        when applicable, and the only driver doing so, does so:
        vn.c.  I am not sure the logic in checking for "&lt;" was right
        before, and it looks even less so now.

        An intial pool of 50 struct specinfo are depleted during
        early boot, after that malloc had better work.  It is
        likely that fewer than 50 would do.

        Hashing is done from udev_t to dev_t with a prime number
        remainder hash, experiments show no better hash available
        for decent cost (MD5 is only marginally better)  The prime
        number used should not be close to a power of two, we use
        83 for now.

        Add new checkalias2() to get around the loss of info from
        dev2udev() in bdevvp();

        The aliased vnodes are hung on a list straight of the dev_t,
        and speclisth[SPECSZ] is unused.  The sharing of struct
        specinfo means that the v_specnext moves into the vnode
        which grows by 4 bytes.

        Don't use a VBLK dev_t which doesn't make sense in MFS, now
        we hang a dummy cdevsw on B/Cmaj 253 so that things look sane.

	Storage overhead from all of this is O(50k).

        Bump __FreeBSD_version to 400009

The next step will add the stuff needed so device-drivers can start to
hang things from struct specinfo
</content>
</entry>
<entry>
<title>Divorce "dev_t" from the "major|minor" bitmap, which is now called</title>
<updated>1999-05-11T19:55:07Z</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>1999-05-11T19:55:07Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=bfbb9ce67005673c7b7c8b2267024adef44f7d1d'/>
<id>urn:sha1:bfbb9ce67005673c7b7c8b2267024adef44f7d1d</id>
<content type='text'>
udev_t in the kernel but still called dev_t in userland.

Provide functions to manipulate both types:
        major()         umajor()
        minor()         uminor()
        makedev()       umakedev()
        dev2udev()      udev2dev()

For now they're functions, they will become in-line functions
after one of the next two steps in this process.

Return major/minor/makedev to macro-hood for userland.

Register a name in cdevsw[] for the "filedescriptor" driver.

In the kernel the udev_t appears in places where we have the
major/minor number combination, (ie: a potential device: we
may not have the driver nor the device), like in inodes, vattr,
cdevsw registration and so on, whereas the dev_t appears where
we carry around a reference to a actual device.

In the future the cdevsw and the aliased-from vnode will be hung
directly from the dev_t, along with up to two softc pointers for
the device driver and a few houskeeping bits.  This will essentially
replace the current "alias" check code (same buck, bigger bang).

A little stunt has been provided to try to catch places where the
wrong type is being used (dev_t vs udev_t), if you see something
not working, #undef DEVT_FASCIST in kern/kern_conf.c and see if
it makes a difference.  If it does, please try to track it down
(many hands make light work) or at least try to reproduce it
as simply as possible, and describe how to do that.

Without DEVT_FASCIST I belive this patch is a no-op.

Stylistic/posixoid comments about the userland view of the &lt;sys/*.h&gt;
files welcome now, from userland they now contain the end result.

Next planned step: make all dev_t's refer to the same devsw[] which
means convert BLK's to CHR's at the perimeter of the vnodes and
other places where they enter the game (bootdev, mknod, sysctl).
</content>
</entry>
<entry>
<title>Reviewed by:	Julian Elischer &lt;julian@whistle.com&gt;</title>
<updated>1999-02-25T05:22:30Z</updated>
<author>
<name>Matthew Dillon</name>
<email>dillon@FreeBSD.org</email>
</author>
<published>1999-02-25T05:22:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=155f87daf2927a5bb3aba921b3b48a1d1e23cbe7'/>
<id>urn:sha1:155f87daf2927a5bb3aba921b3b48a1d1e23cbe7</id>
<content type='text'>
    Add d_parms() to {c,b}devsw[].  If non-NULL this function points to
    a device routine that will properly fill in the specinfo structure.
    vfs_subr.c's checkalias() supplies appropriate defaults.  This change
    should be fully backwards compatible with existing devices.
</content>
</entry>
<entry>
<title>Add changes and code to implement a functional DEVFS.</title>
<updated>1998-04-19T23:32:49Z</updated>
<author>
<name>Julian Elischer</name>
<email>julian@FreeBSD.org</email>
</author>
<published>1998-04-19T23:32:49Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=3e425b968d4b5478e0e1edda78ca13e0e91fa7fe'/>
<id>urn:sha1:3e425b968d4b5478e0e1edda78ca13e0e91fa7fe</id>
<content type='text'>
This code will be turned on with the TWO options
DEVFS and SLICE. (see LINT)
Two labels PRE_DEVFS_SLICE and POST_DEVFS_SLICE will deliniate these changes.

/dev will be automatically mounted by init (thanks phk)
on bootup. See /sys/dev/slice/slice.4 for more info.
All code should act the same without these options enabled.

Mike Smith, Poul Henning Kamp, Soeren, and a few dozen others

This code does not support the following:
bad144 handling.
Persistance. (My head is still hurting from the last time we discussed this)
ATAPI flopies are not handled by the SLICE code yet.

When this code is running, all major numbers are arbitrary and COULD
be dynamically assigned. (this is not done, for POLA only)
Minor numbers for disk slices ARE arbitray and dynamically assigned.
</content>
</entry>
<entry>
<title>Reviewed by:	dyson@freebsd.org (john Dyson), dg@root.com (david greenman)</title>
<updated>1998-03-08T09:59:44Z</updated>
<author>
<name>Julian Elischer</name>
<email>julian@FreeBSD.org</email>
</author>
<published>1998-03-08T09:59:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=b1897c197c06ebd09ab26a462489bd331c96ce2e'/>
<id>urn:sha1:b1897c197c06ebd09ab26a462489bd331c96ce2e</id>
<content type='text'>
Submitted by:	Kirk McKusick (mcKusick@mckusick.com)
Obtained from:  WHistle development tree
</content>
</entry>
<entry>
<title>vnops megacommit</title>
<updated>1997-10-15T13:24:07Z</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>1997-10-15T13:24:07Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=138ec1f71aaaede702a0d6fa33094874d8b6f5e0'/>
<id>urn:sha1:138ec1f71aaaede702a0d6fa33094874d8b6f5e0</id>
<content type='text'>
1.  Use the default function to access all the specfs operations.
2.  Use the default function to access all the fifofs operations.
3.  Use the default function to access all the ufs operations.
4.  Fix VCALL usage in vfs_cache.c
5.  Use VOCALL to access specfs functions in devfs_vnops.c
6.  Staticize most of the spec and fifofs vnops functions.
7.  Make UFS panic if it lacks bits of the underlying storage handling.
</content>
</entry>
<entry>
<title>Convert select -&gt; poll.</title>
<updated>1997-09-14T02:58:12Z</updated>
<author>
<name>Peter Wemm</name>
<email>peter@FreeBSD.org</email>
</author>
<published>1997-09-14T02:58:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=a6aeade2c468577ef67aa9660b6a75b144cecb91'/>
<id>urn:sha1:a6aeade2c468577ef67aa9660b6a75b144cecb91</id>
<content type='text'>
Delete 'always succeed' select/poll handlers, replaced with generic call.
Flag missing vnode op table entries.
</content>
</entry>
<entry>
<title>Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$.  We are not</title>
<updated>1997-02-22T09:48:43Z</updated>
<author>
<name>Peter Wemm</name>
<email>peter@FreeBSD.org</email>
</author>
<published>1997-02-22T09:48:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6875d25465631b7563f1b90e6b05e2640dc81f4e'/>
<id>urn:sha1:6875d25465631b7563f1b90e6b05e2640dc81f4e</id>
<content type='text'>
ready for it yet.
</content>
</entry>
<entry>
<title>This is the kernel Lite/2 commit.  There are some requisite userland</title>
<updated>1997-02-10T02:22:35Z</updated>
<author>
<name>John Dyson</name>
<email>dyson@FreeBSD.org</email>
</author>
<published>1997-02-10T02:22:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=996c772f581f5624846dcd8470ca6860c1678b7c'/>
<id>urn:sha1:996c772f581f5624846dcd8470ca6860c1678b7c</id>
<content type='text'>
changes, so don't expect to be able to run the kernel as-is (very well)
without the appropriate Lite/2 userland changes.

The system boots and can mount UFS filesystems.

Untested: ext2fs, msdosfs, NFS
Known problems: Incorrect Berkeley ID strings in some files.
		Mount_std mounts will not work until the getfsent
		library routine is changed.

Reviewed by:	various people
Submitted by:	Jeffery Hsu &lt;hsu@freebsd.org&gt;
</content>
</entry>
</feed>
