kern/93381: reboot(8) works but 'reboot -n' hangs
Eugene Grosbein
eugen at grosbein.pp.ru
Wed Feb 15 02:40:05 PST 2006
>Number: 93381
>Category: kern
>Synopsis: reboot(8) works but 'reboot -n' hangs
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Feb 15 10:40:02 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Eugene Grosbein
>Release: FreeBSD 6.1-PRERELEASE i386
>Organization:
Svyaz-Service JSC
>Environment:
System: FreeBSD kost.svzserv.kemerovo.su 6.1-PRERELEASE FreeBSD 6.1-PRERELEASE #8: Wed Feb 15 06:40:36 KRAT 2006 eugen at kost.svzserv.kemerovo.su:/usr/obj/usr/src/sys/TEST i386
>Description:
While testing NanoBSD running from USB flash (umass/da0)
I discovered that 'reboot -n' hangs the box just after 'Uptime ...'
is printed to console. Meantime, 'shutdown -r'
and plain 'reboot' works.
I've added lots of printf's into my kernel and traced the a bit.
1. boot() from src/sys/kern/kern_shutdown.c calls
EVENTHANDLER_INVOKE(shutdown_post_sync, howto);
2. dashutdown() from src/sys/cam/scsi/scsi_da.c is called
from shutdown_post_sync;
3. dashutdown() calls xpt_polled_action() from src/sys/cam/cam_xpt.c
4. xpt_polled_action() has the following code:
if (timeout != 0) {
xpt_action(start_ccb);
while(--timeout > 0) {
(*(sim->sim_poll))(sim);
camisr(&cam_bioq);
if ((start_ccb->ccb_h.status & CAM_STATUS_MASK)
!= CAM_REQ_INPROG)
break;
DELAY(1000);
}
This 'while' loop is effectively endless for that case.
timeout appears to be 3600000 (yes, five zeroes) here.
>How-To-Repeat:
Run FreeBSD with root partition being /dev/da0s1a and USB flash.
Try to reboot it using 'reboot -n'.
>Fix:
Unknown
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list