Re: USB disks attach after rootfs prompt

From: Edward Tomasz Napierała <trasz_at_FreeBSD.org>
Date: Sat, 19 Mar 2016 22:56:24 +0100
On 0319T1509, Poul-Henning Kamp wrote:
> --------
> In message <1458397972.68920.69.camel_at_freebsd.org>, Ian Lepore writes:
> >On Sat, 2016-03-19 at 13:04 +0000, Poul-Henning Kamp wrote:
> >> Running:
> >> 
> >> 	FreeBSD 11.0-CURRENT #32 r296137: Sat Feb 27 11:34:01 UTC 2016
> >> 
> >> I tried "boot -a" and found that USB disks only attach *after* you
> >> enter some root filesystem.
> >> 
> >> That's not terribly useful.
> >
> >iirc, interrupts are disabled while you're at the mountroot prompt,
> >which freezes usb enumeration.
> 
> I am somewhat certain that this used to work...

That might be my fault.  I've modified the root mount mechanism to only
wait for the root mount tokens (ie USB) if the root device isn't already
there; basically this makes the kernel not wait for USB if rootfs is
on SATA.

Does the following fix things for you?  (Note there's something
seriously wrong with character echo, but it doesn't seem related.)

Index: svn/head/sys/kern/vfs_mountroot.c
===================================================================
--- svn/head/sys/kern/vfs_mountroot.c	(revision 297053)
+++ svn/head/sys/kern/vfs_mountroot.c	(working copy)
_at__at_ -89,6 +89,7 _at__at_ __FBSDID("$FreeBSD$");
 static int parse_mount(char **);
 static struct mntarg *parse_mountroot_options(struct mntarg *, const char *);
 static int sysctl_vfs_root_mount_hold(SYSCTL_HANDLER_ARGS);
+static void vfs_mountroot_wait(void);
 static int vfs_mountroot_wait_if_neccessary(const char *fs, const char *dev);
 
 /*
_at__at_ -488,6 +489,8 _at__at_ parse_dir_ask(char **conf)
 	char *mnt;
 	int error;
 
+	vfs_mountroot_wait();
+
 	printf("\nLoader variables:\n");
 	parse_dir_ask_printenv("vfs.root.mountfrom");
 	parse_dir_ask_printenv("vfs.root.mountfrom.options");
Received on Sat Mar 19 2016 - 20:56:30 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:03 UTC