From owner-cvs-all Wed May 16 11: 4:49 2001 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id C720437B423; Wed, 16 May 2001 11:04:37 -0700 (PDT) (envelope-from iedowse@FreeBSD.org) Received: (from iedowse@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id f4GI4bV81778; Wed, 16 May 2001 11:04:37 -0700 (PDT) (envelope-from iedowse) Message-Id: <200105161804.f4GI4bV81778@freefall.freebsd.org> From: Ian Dowse Date: Wed, 16 May 2001 11:04:37 -0700 (PDT) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/coda coda_vfsops.c src/sys/fs/devfs devfs_vfsops.c src/sys/fs/hpfs hpfs_vfsops.c src/sys/fs/smbfs smbfs_vfsops.c src/sys/gnu/ext2fs ext2_vfsops.c src/sys/isofs/cd9660 cd9660_vfsops.c src/sys/kern vfs_subr.c ... X-FreeBSD-CVS-Branch: HEAD Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG iedowse 2001/05/16 11:04:37 PDT Modified files: sys/coda coda_vfsops.c sys/fs/devfs devfs_vfsops.c sys/fs/hpfs hpfs_vfsops.c sys/fs/smbfs smbfs_vfsops.c sys/gnu/ext2fs ext2_vfsops.c sys/isofs/cd9660 cd9660_vfsops.c sys/kern vfs_subr.c sys/miscfs/fdesc fdesc_vfsops.c sys/miscfs/nullfs null_vfsops.c sys/miscfs/portal portal_vfsops.c sys/miscfs/umapfs umap_vfsops.c sys/miscfs/union union_vfsops.c sys/msdosfs msdosfs_vfsops.c sys/nfs nfs_vfsops.c sys/ntfs ntfs_vfsops.c sys/nwfs nwfs_vfsops.c sys/sys vnode.h sys/ufs/ffs ffs_vfsops.c Log: Change the second argument of vflush() to an integer that specifies the number of references on the filesystem root vnode to be both expected and released. Many filesystems hold an extra reference on the filesystem root vnode, which must be accounted for when determining if the filesystem is busy and then released if it isn't busy. The old `skipvp' approach required individual filesystem xxx_unmount functions to re-implement much of vflush()'s logic to deal with the root vnode. All 9 filesystems that hold an extra reference on the root vnode got the logic wrong in the case of forced unmounts, so `umount -f' would always fail if there were any extra root vnode references. Fix this issue centrally in vflush(), now that we can. This commit also fixes a vnode reference leak in devfs, which could result in idle devfs filesystems that refuse to unmount. Reviewed by: phk, bp Revision Changes Path 1.32 +2 -2 src/sys/coda/coda_vfsops.c 1.16 +3 -13 src/sys/fs/devfs/devfs_vfsops.c 1.13 +2 -2 src/sys/fs/hpfs/hpfs_vfsops.c 1.2 +3 -16 src/sys/fs/smbfs/smbfs_vfsops.c 1.79 +3 -3 src/sys/gnu/ext2fs/ext2_vfsops.c 1.91 +2 -2 src/sys/isofs/cd9660/cd9660_vfsops.c 1.312 +46 -12 src/sys/kern/vfs_subr.c 1.27 +5 -13 src/sys/miscfs/fdesc/fdesc_vfsops.c 1.47 +3 -24 src/sys/miscfs/nullfs/null_vfsops.c 1.30 +3 -13 src/sys/miscfs/portal/portal_vfsops.c 1.37 +3 -16 src/sys/miscfs/umapfs/umap_vfsops.c 1.44 +7 -25 src/sys/miscfs/union/union_vfsops.c 1.76 +3 -3 src/sys/msdosfs/msdosfs_vfsops.c 1.99 +5 -29 src/sys/nfs/nfs_vfsops.c 1.30 +4 -4 src/sys/ntfs/ntfs_vfsops.c 1.17 +4 -23 src/sys/nwfs/nwfs_vfsops.c 1.151 +2 -2 src/sys/sys/vnode.h 1.154 +4 -4 src/sys/ufs/ffs/ffs_vfsops.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message