diff options
| author | Alexander Langer <alex@FreeBSD.org> | 1998-07-27 01:07:01 +0000 |
|---|---|---|
| committer | Alexander Langer <alex@FreeBSD.org> | 1998-07-27 01:07:01 +0000 |
| commit | 3f47ee5c4d99fd3a96d465558171efa756ec093c (patch) | |
| tree | db2ac410eb2eba21022e1e52407aeb2fab5d866b /sys/fs | |
| parent | d352b6c59e41d8dfdd7d5e50462e160884d3ff56 (diff) | |
Notes
Diffstat (limited to 'sys/fs')
| -rw-r--r-- | sys/fs/procfs/procfs_vfsops.c | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/sys/fs/procfs/procfs_vfsops.c b/sys/fs/procfs/procfs_vfsops.c index fdd7a89db96f..b84ae7fbe1a3 100644 --- a/sys/fs/procfs/procfs_vfsops.c +++ b/sys/fs/procfs/procfs_vfsops.c @@ -36,7 +36,7 @@ * * @(#)procfs_vfsops.c 8.7 (Berkeley) 5/10/95 * - * $Id: procfs_vfsops.c,v 1.22 1998/06/07 17:11:58 dfr Exp $ + * $Id: procfs_vfsops.c,v 1.23 1998/07/25 15:52:44 alex Exp $ */ /* @@ -76,6 +76,7 @@ procfs_mount(mp, path, data, ndp, p) struct proc *p; { size_t size; + int error; if (UIO_MX & (UIO_MX-1)) { log(LOG_ERR, "procfs: invalid directory entry size\n"); @@ -85,6 +86,11 @@ procfs_mount(mp, path, data, ndp, p) if (mp->mnt_flag & MNT_UPDATE) return (EOPNOTSUPP); + if (mp->mnt_vfc->vfc_refcount == 1 && (error = at_exit(procfs_exit))) { + printf("procfs: cannot register procfs_exit with at_exit -- error %d\n", error); + return(error); + } + mp->mnt_flag |= MNT_LOCAL; mp->mnt_data = 0; vfs_getnewfsid(mp); @@ -112,6 +118,9 @@ procfs_unmount(mp, mntflags, p) int error; int flags = 0; + if (mp->mnt_vfc->vfc_refcount == 1) + rm_at_exit(procfs_exit); + if (mntflags & MNT_FORCE) flags |= FORCECLOSE; @@ -173,11 +182,6 @@ static int procfs_init(vfsp) struct vfsconf *vfsp; { - int error; - - if (error = at_exit(procfs_exit)) - printf("procfs: cannot register procfs_exit with at_exit -- error %d\n", error); - return (0); } @@ -208,20 +212,3 @@ static struct vfsops procfs_vfsops = { }; VFS_SET(procfs_vfsops, procfs, MOUNT_PROCFS, VFCF_SYNTHETIC); - -#ifdef VFS_LKM -static int -procfs_unload () -{ - rm_at_exit(procfs_exit); - return(0); -} - -int -procfs_mod(struct lkm_table *lkmtp, int cmd, int ver) -{ - MOD_DISPATCH(procfs, lkmtp, cmd, ver, lkm_nullcmd, - procfs_unload, lkm_nullcmd); -} -#endif - |
