Module Name:    src
Committed By:   christos
Date:           Thu Aug  4 06:13:15 UTC 2016

Modified Files:
        src/sys/kern: kern_module.c

Log Message:
Print the parent module that asked for the builtin to be loaded and failed.
XXX: if a driver is built-in why can't it ask for a filesystem module to
be loaded?


To generate a diff of this commit:
cvs rdiff -u -r1.115 -r1.116 src/sys/kern/kern_module.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_module.c
diff -u src/sys/kern/kern_module.c:1.115 src/sys/kern/kern_module.c:1.116
--- src/sys/kern/kern_module.c:1.115	Thu Jul  7 02:55:43 2016
+++ src/sys/kern/kern_module.c	Thu Aug  4 02:13:15 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_module.c,v 1.115 2016/07/07 06:55:43 msaitoh Exp $	*/
+/*	$NetBSD: kern_module.c,v 1.116 2016/08/04 06:13:15 christos Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_module.c,v 1.115 2016/07/07 06:55:43 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_module.c,v 1.116 2016/08/04 06:13:15 christos Exp $");
 
 #define _MODULE_INTERNAL
 
@@ -93,7 +93,8 @@ static void	module_require_force(module_
 static int	module_do_load(const char *, bool, int, prop_dictionary_t,
 		    module_t **, modclass_t modclass, bool);
 static int	module_do_unload(const char *, bool);
-static int	module_do_builtin(const char *, module_t **, prop_dictionary_t);
+static int	module_do_builtin(const module_t *, const char *, module_t **,
+    prop_dictionary_t);
 static int	module_fetch_info(module_t *);
 static void	module_thread(void *);
 
@@ -266,8 +267,8 @@ module_builtin_add(modinfo_t *const *mip
 	/* finally, init (if required) */
 	if (init) {
 		for (i = 0; i < nmodinfo; i++) {
-			rv = module_do_builtin(modp[i]->mod_info->mi_name,
-			    NULL, NULL);
+			rv = module_do_builtin(modp[i],
+			    modp[i]->mod_info->mi_name, NULL, NULL);
 			/* throw in the towel, recovery hard & not worth it */
 			if (rv)
 				panic("builtin module \"%s\" init failed: %d",
@@ -506,7 +507,8 @@ module_init_class(modclass_t modclass)
 			 * MODFLG_MUST_FORCE, don't try to override that!)
 			 */
 			if ((mod->mod_flags & MODFLG_MUST_FORCE) ||
-			    module_do_builtin(mi->mi_name, NULL, NULL) != 0) {
+			    module_do_builtin(mod, mi->mi_name, NULL,
+			    NULL) != 0) {
 				TAILQ_REMOVE(&module_builtins, mod, mod_chain);
 				TAILQ_INSERT_TAIL(&bi_fail, mod, mod_chain);
 			}
@@ -746,7 +748,8 @@ module_enqueue(module_t *mod)
  *	already linked into the kernel.
  */
 static int
-module_do_builtin(const char *name, module_t **modp, prop_dictionary_t props)
+module_do_builtin(const module_t *pmod, const char *name, module_t **modp,
+    prop_dictionary_t props)
 {
 	const char *p, *s;
 	char buf[MAXMODNAME];
@@ -785,7 +788,8 @@ module_do_builtin(const char *name, modu
 		 * cases (such as nfsserver + nfs), the dependee can be
 		 * succesfully linked without the dependencies.
 		 */
-		module_error("can't find builtin dependency `%s'", name);
+		module_error("%s: can't find builtin dependency `%s'",
+		    pmod->mod_info->mi_name, name);
 		return ENOENT;
 	}
 
@@ -804,12 +808,12 @@ module_do_builtin(const char *name, modu
 			if (buf[0] == '\0')
 				break;
 			if (mod->mod_nrequired == MAXMODDEPS - 1) {
-				module_error("too many required modules "
-				    "%d >= %d", mod->mod_nrequired,
-				    MAXMODDEPS - 1);
+				module_error("%s: too many required modules "
+				    "%d >= %d", pmod->mod_info->mi_name,
+				    mod->mod_nrequired, MAXMODDEPS - 1);
 				return EINVAL;
 			}
-			error = module_do_builtin(buf, &mod2, NULL);
+			error = module_do_builtin(mod, buf, &mod2, NULL);
 			if (error != 0) {
 				return error;
 			}
@@ -913,7 +917,7 @@ module_do_load(const char *name, bool is
 			depth--;
 			return EPERM;
 		} else {
-			error = module_do_builtin(name, modp, props);
+			error = module_do_builtin(mod, name, modp, props);
 			depth--;
 			return error;
 		}

Reply via email to