summaryrefslogtreecommitdiff
path: root/sys/kern/subr_disk.c
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2001-05-26 08:27:58 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2001-05-26 08:27:58 +0000
commit3344c5a17e9322ec55ad4e3026e2a1e547b89938 (patch)
treed64002caeb72adbdfba8967693335078ae1cb1ff /sys/kern/subr_disk.c
parentcaff01c2764f056e427ef4cd20a37357c7d4b3f2 (diff)
Notes
Diffstat (limited to 'sys/kern/subr_disk.c')
-rw-r--r--sys/kern/subr_disk.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c
index c50c21aeea20..3ac95257f9fb 100644
--- a/sys/kern/subr_disk.c
+++ b/sys/kern/subr_disk.c
@@ -86,6 +86,7 @@ disk_clone(void *arg, char *name, int namelen, dev_t *dev)
*dev = make_dev(pdev->si_devsw, dkmakeminor(u, s, p),
UID_ROOT, GID_OPERATOR, 0640, name);
+ dev_depends(pdev, *dev);
return;
}
}
@@ -105,7 +106,14 @@ dev_t
disk_create(int unit, struct disk *dp, int flags, struct cdevsw *cdevsw, struct cdevsw *proto)
{
static int once;
- dev_t dev;
+ dev_t dev, cdev;
+ int i;
+ char buf[20];
+
+ if (!once) {
+ EVENTHANDLER_REGISTER(dev_clone, disk_clone, 0, 1000);
+ once++;
+ }
bzero(dp, sizeof(*dp));
@@ -128,9 +136,14 @@ disk_create(int unit, struct disk *dp, int flags, struct cdevsw *cdevsw, struct
dp->d_dsflags = flags;
dp->d_devsw = cdevsw;
LIST_INSERT_HEAD(&disklist, dp, d_list);
- if (!once) {
- EVENTHANDLER_REGISTER(dev_clone, disk_clone, 0, 1000);
- once++;
+
+ sprintf(buf, "%sc", dev->si_name);
+ cdev = NODEV;
+ disk_clone(NULL, buf, strlen(buf), &cdev);
+ for (i = 1; i < 5; i++) {
+ sprintf(buf, "%ss%d", dev->si_name, i);
+ cdev = NODEV;
+ disk_clone(NULL, buf, strlen(buf), &cdev);
}
return (dev);
}