For now, take out directory operation locking. Get rid of buffer
[unix-history] / usr / src / sys / ufs / lfs / lfs_vfsops.c
index 68916b8..4f5ff66 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)lfs_vfsops.c        7.84 (Berkeley) %G%
+ *     @(#)lfs_vfsops.c        7.88 (Berkeley) %G%
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -247,6 +247,9 @@ lfs_mountfs(devvp, mp, p)
        ump->um_mountp = mp;
        ump->um_dev = dev;
        ump->um_devvp = devvp;
        ump->um_mountp = mp;
        ump->um_dev = dev;
        ump->um_devvp = devvp;
+       ump->um_bptrtodb = 0;
+       ump->um_seqinc = 1 << fs->lfs_fsbtodb;
+       ump->um_nindir = fs->lfs_nindir;
        for (i = 0; i < MAXQUOTAS; i++)
                ump->um_quotas[i] = NULLVP;
        devvp->v_specflags |= SI_MOUNTEDON;
        for (i = 0; i < MAXQUOTAS; i++)
                ump->um_quotas[i] = NULLVP;
        devvp->v_specflags |= SI_MOUNTEDON;
@@ -320,7 +323,7 @@ lfs_unmount(mp, mntflags, p)
        fs->lfs_clean = 1;
        if (error = VFS_SYNC(mp, 1, p->p_ucred, p))
                return (error);
        fs->lfs_clean = 1;
        if (error = VFS_SYNC(mp, 1, p->p_ucred, p))
                return (error);
-       if (fs->lfs_ivnode->v_dirtyblkhd)
+       if (fs->lfs_ivnode->v_dirtyblkhd.le_next)
                panic("lfs_unmount: still dirty blocks on ifile vnode\n");
        vrele(fs->lfs_ivnode);
        vgone(fs->lfs_ivnode);
                panic("lfs_unmount: still dirty blocks on ifile vnode\n");
        vrele(fs->lfs_ivnode);
        vgone(fs->lfs_ivnode);
@@ -346,7 +349,7 @@ lfs_statfs(mp, sbp, p)
        sbp->f_blocks = dbtofsb(fs,fs->lfs_dsize);
        sbp->f_bfree = dbtofsb(fs, fs->lfs_bfree);
        sbp->f_bavail = (fs->lfs_dsize * (100 - fs->lfs_minfree) / 100) -
        sbp->f_blocks = dbtofsb(fs,fs->lfs_dsize);
        sbp->f_bfree = dbtofsb(fs, fs->lfs_bfree);
        sbp->f_bavail = (fs->lfs_dsize * (100 - fs->lfs_minfree) / 100) -
-               (fs->lfs_dsize - sbp->f_bfree);
+               (fs->lfs_dsize - fs->lfs_bfree);
        sbp->f_bavail = dbtofsb(fs, sbp->f_bavail);
        sbp->f_files = fs->lfs_nfiles;
        sbp->f_ffree = sbp->f_bfree * INOPB(fs);
        sbp->f_bavail = dbtofsb(fs, sbp->f_bavail);
        sbp->f_files = fs->lfs_nfiles;
        sbp->f_ffree = sbp->f_bfree * INOPB(fs);
@@ -455,7 +458,7 @@ lfs_vget(mp, ino, vpp)
                ufs_ihashrem(ip);
 
                /* Unlock and discard unneeded inode. */
                ufs_ihashrem(ip);
 
                /* Unlock and discard unneeded inode. */
-               ufs_iput(ip);
+               vput(vp);
                brelse(bp);
                *vpp = NULL;
                return (error);
                brelse(bp);
                *vpp = NULL;
                return (error);
@@ -468,7 +471,7 @@ lfs_vget(mp, ino, vpp)
         * cases re-init ip, the underlying vnode/inode may have changed.
         */
        if (error = ufs_vinit(mp, lfs_specop_p, LFS_FIFOOPS, &vp)) {
         * cases re-init ip, the underlying vnode/inode may have changed.
         */
        if (error = ufs_vinit(mp, lfs_specop_p, LFS_FIFOOPS, &vp)) {
-               ufs_iput(ip);
+               vput(vp);
                *vpp = NULL;
                return (error);
        }
                *vpp = NULL;
                return (error);
        }
@@ -510,7 +513,7 @@ lfs_fhtovp(mp, fhp, nam, vpp, exflagsp, credanonp)
        ufhp = (struct ufid *)fhp;
        if (ufhp->ufid_ino < ROOTINO)
                return (ESTALE);
        ufhp = (struct ufid *)fhp;
        if (ufhp->ufid_ino < ROOTINO)
                return (ESTALE);
-       return (ufs_check_export(mp, fhp, nam, vpp, exflagsp, credanonp));
+       return (ufs_check_export(mp, ufhp, nam, vpp, exflagsp, credanonp));
 }
 
 /*
 }
 
 /*