From dima@tejblum.dnttm.rssi.ru  Sun Apr 13 12:14:29 1997
Received: from helios.dnttm.ru (uutejb@dnttm.wave.ras.ru [194.85.104.197])
          by freefall.freebsd.org (8.8.5/8.8.5) with ESMTP id MAA19592
          for <FreeBSD-gnats-submit@freebsd.org>; Sun, 13 Apr 1997 12:14:21 -0700 (PDT)
Received: (from uutejb@localhost)
	by helios.dnttm.ru (8.8.5/8.8.5/IP-2) with UUCP id XAA14260
	for FreeBSD-gnats-submit@freebsd.org; Sun, 13 Apr 1997 23:15:02 +0400
Received: (from dima@localhost)
	by tejblum.dnttm.rssi.ru (8.8.5/8.8.5) id XAA00844;
	Sun, 13 Apr 1997 23:13:14 +0400 (MSD)
Message-Id: <199704131913.XAA00844@tejblum.dnttm.rssi.ru>
Date: Sun, 13 Apr 1997 23:13:14 +0400 (MSD)
From: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>
Reply-To: dima@tejblum.dnttm.rssi.ru
To: FreeBSD-gnats-submit@freebsd.org
Subject: unmount DEVFS ==> panic: unmount: dangling vnode
X-Send-Pr-Version: 3.2

>Number:         3276
>Category:       kern
>Synopsis:       unmount DEVFS ==> panic: unmount: dangling vnode
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:
>Keywords:
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Apr 13 12:20:03 PDT 1997
>Closed-Date:    Sat May 3 23:21:21 MET DST 1997
>Last-Modified:  Sat May  3 23:22:53 MET DST 1997
>Originator:     Dmitrij Tejblum
>Release:        FreeBSD 3.0-CURRENT i386
>Organization:
>Environment:

FreeBSD tejblum.dnttm.rssi.ru 3.0-CURRENT FreeBSD 3.0-CURRENT #0: Sat Apr 12 19:
43:17 MSD 1997 dima@tejblum.dnttm.rssi.ru:/usr/src/sys/compile/DIMA  i386

devfs                   /devs   devfs   rw              0       0

in /etc/fstab

>Description:

When system unmount /devs, in particular on shutdown, system panic:
unmount: dangling vnode.


>How-To-Repeat:

put the line above in /etc/fstab
mount /devs
umount /devs

>Fix:
Workaround (?):

*** sys/miscfs/devfs/devfs_vfsops.c.orig	Sat Apr 12 18:02:55 1997
--- sys/miscfs/devfs/devfs_vfsops.c	Sun Apr 13 23:10:34 1997
***************
*** 139,151 ****
  
  /*
   *  Unmount the filesystem described by mp.
-  * Note: vnodes from this FS may hang around if being used..
-  * This should not be a problem, they should be self contained.
   */
  static int
  devfs_unmount( struct mount *mp, int mntflags, struct proc *p)
  {
  	struct devfsmount *devfs_mp_p = (struct devfsmount *)mp->mnt_data;
  
  DBPRINT(("unmount "));
  	devfs_free_plane(devfs_mp_p);
--- 139,158 ----
  
  /*
   *  Unmount the filesystem described by mp.
   */
  static int
  devfs_unmount( struct mount *mp, int mntflags, struct proc *p)
  {
  	struct devfsmount *devfs_mp_p = (struct devfsmount *)mp->mnt_data;
+ 	int flags = 0;
+ 	int error;
+ 	
+ 	if (mntflags & MNT_FORCE) {
+ 		flags |= FORCECLOSE;
+ 	}
+ 	error = vflush(mp, NULLVP, flags);
+ 	if (error)
+ 		return error;
  
  DBPRINT(("unmount "));
  	devfs_free_plane(devfs_mp_p);
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: joerg 
State-Changed-When: Sat May 3 23:21:21 MET DST 1997 
State-Changed-Why:  
Suggested fixes from PR # 3276 and 3469 applied, in rev 1.36 and 
1.17 of devfs_tree.c, and devfs_vfsops.c, respectively. 

Thanks for the fixes! 

>Unformatted:
 
