| Summary: | Re: amd64/170677: FreeBSD 9.x does not boot if 2 hard disks are on system | ||
|---|---|---|---|
| Product: | Base System | Reporter: | Harald von Fellenberg <productnews> |
| Component: | amd64 | Assignee: | freebsd-amd64 (Nobody) <amd64> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | Unspecified | ||
| Hardware: | Any | ||
| OS: | Any | ||
State Changed From-To: open->closed Misfiled followup to amd64/170677; content migrated. |
Followup to my earlies bug report amd64/170677. I instrumented the loader code (in /usr/src/sys/boot) with various printf's to see where the delay occurs. Here are my findings: 1. in /usr/src/sys/boot/common/devopen.c around line 47: /* point to device-specific data so that device open can use it */ f->f_devdata = dev; result = dev->d_dev->dv_open(f, dev); if (result != 0) { the call to dev->d_dev->dv_open(f, dev) always blocks for around 15 seconds, both for existing and non-existing files. Why is that? 2. the loader opens about 19 existing files (among them the kernel at /boot/kernel/kernel five times!) and tries to open about 18 non-existing files (among them /boot/kernel/linker.hints twice). Each open adds about 15 seconds, so the complete time to get to the loader menu is around 10 to 11 minutes. I do not know why this delay occurs, why it only occurs when 2 HDs are present, and how it can be avoided. every help to solve this riddle is appreciated!