diff --git a/sys/boot/common/loader.8 b/sys/boot/common/loader.8 index f20b656..e585830 100644 --- a/sys/boot/common/loader.8 +++ b/sys/boot/common/loader.8 @@ -759,6 +759,8 @@ Root file system and extra options for .Nm initrd . See .Xr mkinitrd 8 . +.It Va vfs.root.wakedelay +Specify an additional delay (default is 2 seconds if unspecified) before trying to mount root. .El .Sh FILES .Bl -tag -width /boot/defaults/dloader.menu -compact diff --git a/sys/boot/dloader/loader.conf b/sys/boot/dloader/loader.conf index 75daa34..b7cbe37 100644 --- a/sys/boot/dloader/loader.conf +++ b/sys/boot/dloader/loader.conf @@ -94,6 +94,7 @@ bitmap_type="splash_image_data" # and place it on the module_path #kern.ipc.nmbufs="" # Set the maximum number of mbufs #kern.vm.kmem.size="" # Sets the size of kernel memory (bytes) #net.inet.tcp.tcbhashsize="" # Set the value of TCBHASHSIZE +#vfs.root.wakedelay="" # Delay in seconds before trying to mount the root #vfs.root.mountfrom="" # Specify root partition in a way the # kernel understands. You can specify a semicolon # separated device list which will be tried. diff --git a/sys/kern/vfs_conf.c b/sys/kern/vfs_conf.c index 2795314..944d8bd 100644 --- a/sys/kern/vfs_conf.c +++ b/sys/kern/vfs_conf.c @@ -102,7 +102,10 @@ char *rootdevnames[2] = {NULL, NULL}; static int setrootbyname(char *name); SYSINIT(mountroot, SI_SUB_MOUNT_ROOT, SI_ORDER_SECOND, vfs_mountroot, NULL); - + +static int wakedelay = 2; /* delay before mounting root: defaults to 2 seconds */ +TUNABLE_INT("vfs.root.wakedelay", &wakedelay); + /* * Find and mount the root filesystem */ @@ -121,12 +124,12 @@ vfs_mountroot(void *junk) * Messages can fly around here so get good synchronization * coverage. * - * XXX - Delay an additional 2 seconds to help drivers which pickup + * XXX - Delay some more (default: 2s) to help drivers which pickup * devices asynchronously and are not caught by CAM's initial * probe. */ sync_devs(); - tsleep(&dummy, 0, "syncer", hz*2); + tsleep(&dummy, 0, "syncer", hz*wakedelay); /*