From ad6cb559524148cc313ed960c618bef76af1a785 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Sat, 3 Jul 1999 08:24:00 +0000 Subject: [PATCH] Be more informative and try to ask the user in some instances if we can't figure out the root device. --- sys/amd64/amd64/autoconf.c | 26 ++++++++++++++++++-------- sys/i386/i386/autoconf.c | 26 ++++++++++++++++++-------- sys/kern/vfs_conf.c | 6 +++--- sys/kern/vfs_mount.c | 6 +++--- 4 files changed, 42 insertions(+), 22 deletions(-) diff --git a/sys/amd64/amd64/autoconf.c b/sys/amd64/amd64/autoconf.c index 1118fcbea62..05507a85513 100644 --- a/sys/amd64/amd64/autoconf.c +++ b/sys/amd64/amd64/autoconf.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)autoconf.c 7.1 (Berkeley) 5/9/91 - * $Id: autoconf.c,v 1.124 1999/05/31 11:25:39 phk Exp $ + * $Id: autoconf.c,v 1.125 1999/06/01 18:56:10 phk Exp $ */ /* @@ -431,18 +431,27 @@ setroot() #endif return; } - if ((bootdev & B_MAGICMASK) != B_DEVMAGIC) + if ((bootdev & B_MAGICMASK) != B_DEVMAGIC) { + printf("No B_DEVMAGIC\n"); + setconf(); return; + } majdev = B_TYPE(bootdev); dev = makebdev(majdev, 0); - if (bdevsw(dev) == NULL) + if (bdevsw(dev) == NULL) { + printf("No bdevsw (majdev=%d bootdev=%08x)\n", majdev, bootdev); + setconf(); return; + } unit = B_UNIT(bootdev); slice = B_SLICE(bootdev); if (slice == WHOLE_DISK_SLICE) slice = COMPATIBILITY_SLICE; - if (slice < 0 || slice >= MAX_SLICES) + if (slice < 0 || slice >= MAX_SLICES) { + printf("bad slice\n"); + setconf(); return; + } /* * XXX kludge for inconsistent unit numbering and lack of slice @@ -508,6 +517,7 @@ setrootbyname(char *name) int bd, unit, slice, part; dev_t dev; + printf("setrootbyname(\"%s\")\n", name); slice = 0; part = 0; cp = name; @@ -545,9 +555,9 @@ gotit: printf("junk after name\n"); return (1); } - printf("driver=%s, unit=%d, slice=%d, part=%d\n", - name, unit, slice, part); rootdev = makebdev(bd, dkmakeminor(unit, slice, part)); + printf("driver=%s, unit=%d, slice=%d, part=%d -> rootdev=%08x\n", + name, unit, slice, part, rootdev); return 0; } @@ -569,9 +579,9 @@ setconf() for (i = 0; i < NUMCDEVSW; i++) { dev = makebdev(i, 0); if (bdevsw(dev) != NULL) - printf(" %s", bdevsw(dev)->d_name); + printf(" \"%s\"", bdevsw(dev)->d_name); } - printf(" followed by a unit number...\n"); + printf("\nfollowed by a unit number...\n"); } } diff --git a/sys/i386/i386/autoconf.c b/sys/i386/i386/autoconf.c index 1118fcbea62..05507a85513 100644 --- a/sys/i386/i386/autoconf.c +++ b/sys/i386/i386/autoconf.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)autoconf.c 7.1 (Berkeley) 5/9/91 - * $Id: autoconf.c,v 1.124 1999/05/31 11:25:39 phk Exp $ + * $Id: autoconf.c,v 1.125 1999/06/01 18:56:10 phk Exp $ */ /* @@ -431,18 +431,27 @@ setroot() #endif return; } - if ((bootdev & B_MAGICMASK) != B_DEVMAGIC) + if ((bootdev & B_MAGICMASK) != B_DEVMAGIC) { + printf("No B_DEVMAGIC\n"); + setconf(); return; + } majdev = B_TYPE(bootdev); dev = makebdev(majdev, 0); - if (bdevsw(dev) == NULL) + if (bdevsw(dev) == NULL) { + printf("No bdevsw (majdev=%d bootdev=%08x)\n", majdev, bootdev); + setconf(); return; + } unit = B_UNIT(bootdev); slice = B_SLICE(bootdev); if (slice == WHOLE_DISK_SLICE) slice = COMPATIBILITY_SLICE; - if (slice < 0 || slice >= MAX_SLICES) + if (slice < 0 || slice >= MAX_SLICES) { + printf("bad slice\n"); + setconf(); return; + } /* * XXX kludge for inconsistent unit numbering and lack of slice @@ -508,6 +517,7 @@ setrootbyname(char *name) int bd, unit, slice, part; dev_t dev; + printf("setrootbyname(\"%s\")\n", name); slice = 0; part = 0; cp = name; @@ -545,9 +555,9 @@ gotit: printf("junk after name\n"); return (1); } - printf("driver=%s, unit=%d, slice=%d, part=%d\n", - name, unit, slice, part); rootdev = makebdev(bd, dkmakeminor(unit, slice, part)); + printf("driver=%s, unit=%d, slice=%d, part=%d -> rootdev=%08x\n", + name, unit, slice, part, rootdev); return 0; } @@ -569,9 +579,9 @@ setconf() for (i = 0; i < NUMCDEVSW; i++) { dev = makebdev(i, 0); if (bdevsw(dev) != NULL) - printf(" %s", bdevsw(dev)->d_name); + printf(" \"%s\"", bdevsw(dev)->d_name); } - printf(" followed by a unit number...\n"); + printf("\nfollowed by a unit number...\n"); } } diff --git a/sys/kern/vfs_conf.c b/sys/kern/vfs_conf.c index c8ebca6d88d..27d53ba3769 100644 --- a/sys/kern/vfs_conf.c +++ b/sys/kern/vfs_conf.c @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)vfs_conf.c 8.8 (Berkeley) 3/31/94 - * $Id: vfs_conf.c,v 1.28 1999/05/24 00:37:26 jb Exp $ + * $Id: vfs_conf.c,v 1.29 1999/06/26 14:44:24 peter Exp $ */ /* @@ -129,7 +129,7 @@ vfs_mountrootfs(void *unused) * New root mount structure */ if ((err = vfs_rootmountalloc(mountrootfsname, ROOTNAME, &mp))) { - printf("error %d: ", err); + printf("rootdev=%08x error=%d, ", rootdev, err); panic("cannot mount root\n"); return ; } @@ -170,7 +170,7 @@ vfs_mountrootfs(void *unused) * (hardly worthwhile with the PANIC eh?) */ free( mp, M_MOUNT); - printf("error %d: ", err); + printf("rootdev=%08x error=%d, ", rootdev, err); panic("cannot mount root (2)\n"); return; } diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index c8ebca6d88d..27d53ba3769 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)vfs_conf.c 8.8 (Berkeley) 3/31/94 - * $Id: vfs_conf.c,v 1.28 1999/05/24 00:37:26 jb Exp $ + * $Id: vfs_conf.c,v 1.29 1999/06/26 14:44:24 peter Exp $ */ /* @@ -129,7 +129,7 @@ vfs_mountrootfs(void *unused) * New root mount structure */ if ((err = vfs_rootmountalloc(mountrootfsname, ROOTNAME, &mp))) { - printf("error %d: ", err); + printf("rootdev=%08x error=%d, ", rootdev, err); panic("cannot mount root\n"); return ; } @@ -170,7 +170,7 @@ vfs_mountrootfs(void *unused) * (hardly worthwhile with the PANIC eh?) */ free( mp, M_MOUNT); - printf("error %d: ", err); + printf("rootdev=%08x error=%d, ", rootdev, err); panic("cannot mount root (2)\n"); return; }