From a92fba6cdbe47d136fe527f776691984cf95875c Mon Sep 17 00:00:00 2001 From: Antonio Huete Jimenez Date: Wed, 23 Dec 2009 16:22:07 +0100 Subject: [PATCH] mfs - Properly register md module. md wasn't properly registered in the module list because an incorrect SYSINIT() initialization, so even when it was included on the kernel itself, it couldn't be find while kldload(2) thus producing a panic if kldunload(2) was issued. Reported-by : Many people Dragonfly-bug: --- sys/dev/disk/md/md.c | 24 +++++++++++++++++++++++- 1 files changed, 23 insertions(+), 1 deletions(-) diff --git a/sys/dev/disk/md/md.c b/sys/dev/disk/md/md.c index 210137d..dc36ac3 100644 --- a/sys/dev/disk/md/md.c +++ b/sys/dev/disk/md/md.c @@ -84,9 +84,31 @@ struct md_s { unsigned pl_len; }; +static int mdinit(module_t, int, void *); +static void md_drvinit(void *); + static int mdunits; static int +mdinit(module_t mod, int cmd, void *arg) +{ + int ret = 0; + + switch(cmd) { + case MOD_LOAD: + md_drvinit(NULL); + break; + case MOD_UNLOAD: + break; + default: + ret = EINVAL; + break; + } + + return (ret); +} + +static int mdopen(struct dev_open_args *ap) { cdev_t dev = ap->a_head.a_dev; @@ -444,7 +466,7 @@ md_drvinit(void *unused) mdcreate_malloc(); } -SYSINIT(mddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR, md_drvinit,NULL) +DEV_MODULE(md, mdinit, NULL); #ifdef MD_ROOT static void -- 1.6.4