DragonFly bugs List (threaded) for 2007-07
DragonFly BSD
DragonFly bugs List (threaded) for 2007-07
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: [issue713] shutdown freeze and forced unmounts

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Sat, 7 Jul 2007 12:08:02 -0700 (PDT)

:Peter Avalos <pavalos@theshell.com> added the comment:
:Now I'm seeing acpi_button messages:

    Ok, I'm not sure what is going on with the buttons.  But lets try
    to get some additional information on the forced unmounts.  I don't
    like the fact that 14 processes seem to be stuck.

    Lets try to get a good kernel core for this condition.  Here's a patch
    which will hopefully print out which mount(s) are having problems, and
    will also panic the system when it hits a mount with more then 12 
    process references (the idea being to try to get a snapshot of the
    kernel when its in this situation that can then be kgdb'd).

    Once you get a good kernel core, remove the panic.

    I have a feeling that the freeze is due to the mount confusion and not
    ACPI, but I could be wrong.

Index: vfs_syscalls.c
RCS file: /cvs/src/sys/kern/vfs_syscalls.c,v
retrieving revision 1.117
diff -u -p -r1.117 vfs_syscalls.c
--- vfs_syscalls.c	26 Jun 2007 20:39:33 -0000	1.117
+++ vfs_syscalls.c	7 Jul 2007 19:06:17 -0000
@@ -678,6 +678,8 @@ 			mount_warning(mp, "Forced unmount: "
 					  "%d process references still "
 					  "present", mp->mnt_refs);
 			freeok = 0;
+			if (panicstr == NULL && mp->mnt_refs > 12)
+				panic("Panicing on forced unmount");
@@ -758,7 +760,10 @@ 		kvprintf(ctl, va);
 		kfree(buf, M_TEMP);
 	} else {
-		kprintf("unmount(%p): ", mp);
+		kprintf("unmount(%p", mp);
+		if (mp->mnt_ncmounton.ncp && mp->mnt_ncmounton.ncp->nc_name)
+			kprintf(",%s", mp->mnt_ncmounton.ncp->nc_name);
+		kprintf("): ");
 		kvprintf(ctl, va);

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]