diff options
Diffstat (limited to 'sys/fs/nullfs/null_vfsops.c')
-rw-r--r-- | sys/fs/nullfs/null_vfsops.c | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/sys/fs/nullfs/null_vfsops.c b/sys/fs/nullfs/null_vfsops.c index 754a121..5b49fbb 100644 --- a/sys/fs/nullfs/null_vfsops.c +++ b/sys/fs/nullfs/null_vfsops.c @@ -93,9 +93,7 @@ nullfs_mount(mp, path, data, ndp, p) u_int size; int isvnunlocked = 0; -#ifdef DEBUG - printf("nullfs_mount(mp = %p)\n", (void *)mp); -#endif + NULLFSDEBUG("nullfs_mount(mp = %p)\n", (void *)mp); /* * Update is a no-op @@ -149,9 +147,7 @@ nullfs_mount(mp, path, data, ndp, p) * Check multi null mount to avoid `lock against myself' panic. */ if (lowerrootvp == VTONULL(mp->mnt_vnodecovered)->null_lowervp) { -#ifdef DEBUG - printf("nullfs_mount: multi null mount?\n"); -#endif + NULLFSDEBUG("nullfs_mount: multi null mount?\n"); return (EDEADLK); } @@ -199,10 +195,8 @@ nullfs_mount(mp, path, data, ndp, p) &size); bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size); (void)nullfs_statfs(mp, &mp->mnt_stat, p); -#ifdef DEBUG - printf("nullfs_mount: lower %s, alias at %s\n", + NULLFSDEBUG("nullfs_mount: lower %s, alias at %s\n", mp->mnt_stat.f_mntfromname, mp->mnt_stat.f_mntonname); -#endif return (0); } @@ -231,12 +225,11 @@ nullfs_unmount(mp, mntflags, p) struct proc *p; { struct vnode *nullm_rootvp = MOUNTTONULLMOUNT(mp)->nullm_rootvp; + void *mntdata; int error; int flags = 0; -#ifdef DEBUG - printf("nullfs_unmount(mp = %p)\n", (void *)mp); -#endif + NULLFSDEBUG("nullfs_unmount: mp = %p\n", (void *)mp); if (mntflags & MNT_FORCE) flags |= FORCECLOSE; @@ -257,7 +250,7 @@ nullfs_unmount(mp, mntflags, p) if (error) return (error); -#ifdef DEBUG +#ifdef NULLFS_DEBUG vprint("alias root of lower", nullm_rootvp); #endif /* @@ -271,8 +264,9 @@ nullfs_unmount(mp, mntflags, p) /* * Finally, throw away the null_mount structure */ - free(mp->mnt_data, M_NULLFSMNT); /* XXX */ + mntdata = mp->mnt_data; mp->mnt_data = 0; + free(mntdata, M_NULLFSMNT); /* XXX */ return 0; } @@ -284,29 +278,27 @@ nullfs_root(mp, vpp) struct proc *p = curproc; /* XXX */ struct vnode *vp; -#ifdef DEBUG - printf("nullfs_root(mp = %p, vp = %p->%p)\n", (void *)mp, + NULLFSDEBUG("nullfs_root(mp = %p, vp = %p->%p)\n", (void *)mp, (void *)MOUNTTONULLMOUNT(mp)->nullm_rootvp, (void *)NULLVPTOLOWERVP(MOUNTTONULLMOUNT(mp)->nullm_rootvp)); -#endif /* * Return locked reference to root. */ vp = MOUNTTONULLMOUNT(mp)->nullm_rootvp; VREF(vp); +#ifdef NULLFS_DEBUG if (VOP_ISLOCKED(vp, NULL)) { /* * XXX * Should we check type of node? */ -#ifdef DEBUG printf("nullfs_root: multi null mount?\n"); -#endif vrele(vp); return (EDEADLK); - } else - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p); + } +#endif + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p); *vpp = vp; return 0; } @@ -331,11 +323,9 @@ nullfs_statfs(mp, sbp, p) int error; struct statfs mstat; -#ifdef DEBUG - printf("nullfs_statfs(mp = %p, vp = %p->%p)\n", (void *)mp, + NULLFSDEBUG("nullfs_statfs(mp = %p, vp = %p->%p)\n", (void *)mp, (void *)MOUNTTONULLMOUNT(mp)->nullm_rootvp, (void *)NULLVPTOLOWERVP(MOUNTTONULLMOUNT(mp)->nullm_rootvp)); -#endif bzero(&mstat, sizeof(mstat)); @@ -440,7 +430,7 @@ static struct vfsops null_vfsops = { nullfs_checkexp, nullfs_vptofh, nullfs_init, - vfs_stduninit, + nullfs_uninit, nullfs_extattrctl, }; |