Date: Wed, 16 May 2001 11:04:37 -0700 (PDT) From: Ian Dowse <iedowse@FreeBSD.org> 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 ... Message-ID: <200105161804.f4GI4bV81778@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200105161804.f4GI4bV81778>