diff options
author | phk <phk@FreeBSD.org> | 2000-08-24 15:36:55 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2000-08-24 15:36:55 +0000 |
commit | ec761116e25ef0a9e43ec5670c7c6565a4848a0b (patch) | |
tree | 526f85e393c165d9f02f974b9d8214c9b1605bc4 /sys/kern/vfs_mount.c | |
parent | f234fce050713400cc0e6419a59b0f6df01a2501 (diff) | |
download | FreeBSD-src-ec761116e25ef0a9e43ec5670c7c6565a4848a0b.zip FreeBSD-src-ec761116e25ef0a9e43ec5670c7c6565a4848a0b.tar.gz |
Fix panic when removing open device (found by bp@)
Implement subdirs.
Build the full "devicename" for cloning functions.
Fix panic when deleted device goes away.
Collaps devfs_dir and devfs_dirent structures.
Add proper cloning to the /dev/fd* "device-"driver.
Fix a bug in make_dev_alias() handling which made aliases appear
multiple times.
Use devfs_clone to implement getdiskbyname()
Make specfs maintain the stat(2) timestamps per dev_t
Diffstat (limited to 'sys/kern/vfs_mount.c')
-rw-r--r-- | sys/kern/vfs_mount.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index 9a0ca2c..c75ba40 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -43,6 +43,7 @@ */ #include "opt_rootdevname.h" +#include "opt_devfs.h" #include <sys/param.h> #include <sys/kernel.h> @@ -62,6 +63,11 @@ #include <ddb/ddb.h> #endif +#ifdef DEVFS +#include <sys/eventhandler.h> +#include <fs/devfs/devfs.h> +#endif + MALLOC_DEFINE(M_MOUNT, "mount", "vfs mount structure"); #define ROOTNAME "root_device" @@ -320,6 +326,19 @@ gets(char *cp) */ dev_t getdiskbyname(char *name) { +#ifdef DEVFS + char *cp; + dev_t dev; + + cp = name; + if (!bcmp(cp, "/dev/", 5)) + cp += 5; + + dev = NODEV; + EVENTHANDLER_INVOKE(devfs_clone, cp, strlen(cp), &dev); + return (dev); + +#else char *cp; int cd, unit, slice, part; dev_t dev; @@ -367,6 +386,7 @@ gotit: return (NODEV); } return (makedev(cd, dkmakeminor(unit, slice, part))); +#endif } /* |