diff options
author | phk <phk@FreeBSD.org> | 2004-10-25 09:14:03 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2004-10-25 09:14:03 +0000 |
commit | 0e87ab8bc6e542c845f82c2bb526208587b200ad (patch) | |
tree | 200ff5f062ab8c134c56e5c8d6bd7fb2f35f6bad /sys/ufs | |
parent | 100e94e682f93c8aeae0f6683f1adab50f67b1f7 (diff) | |
download | FreeBSD-src-0e87ab8bc6e542c845f82c2bb526208587b200ad.zip FreeBSD-src-0e87ab8bc6e542c845f82c2bb526208587b200ad.tar.gz |
Loose the v_dirty* and v_clean* alias macros.
Check the count field where we just want to know the full/empty state,
rather than using TAILQ_EMPTY() or TAILQ_FIRST().
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ffs/ffs_inode.c | 4 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_rawread.c | 30 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 11 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_vfsops.c | 6 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_vnops.c | 9 |
5 files changed, 30 insertions, 30 deletions
diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c index 372d83c..012542a 100644 --- a/sys/ufs/ffs/ffs_inode.c +++ b/sys/ufs/ffs/ffs_inode.c @@ -483,8 +483,8 @@ done: VI_LOCK(ovp); if (length == 0 && (fs->fs_magic != FS_UFS2_MAGIC || oip->i_din2->di_extsize == 0) && - (!TAILQ_EMPTY(&ovp->v_dirtyblkhd) || - !TAILQ_EMPTY(&ovp->v_cleanblkhd))) + (vp->v_bufobj.bo_dirty.bv_cnt > 0 || + vp->v_bufobj.bo_clean.bv_cnt > 0)) panic("ffs_truncate3"); VI_UNLOCK(ovp); #endif /* DIAGNOSTIC */ diff --git a/sys/ufs/ffs/ffs_rawread.c b/sys/ufs/ffs/ffs_rawread.c index e5cc03e..05f1577 100644 --- a/sys/ufs/ffs/ffs_rawread.c +++ b/sys/ufs/ffs/ffs_rawread.c @@ -102,13 +102,15 @@ ffs_rawread_sync(struct vnode *vp, struct thread *td) int spl; int error; int upgraded; + struct bufobj *bo; GIANT_REQUIRED; /* Check for dirty mmap, pending writes and dirty buffers */ spl = splbio(); VI_LOCK(vp); - if (vp->v_numoutput > 0 || - !TAILQ_EMPTY(&vp->v_dirtyblkhd) || + bo = &vp->v_bufobj; + if (bo->bo_numoutput > 0 || + bo->bo_dirty.bv_cnt > 0) || (vp->v_iflag & VI_OBJDIRTY) != 0) { splx(spl); VI_UNLOCK(vp); @@ -136,19 +138,17 @@ ffs_rawread_sync(struct vnode *vp, struct thread *td) /* Wait for pending writes to complete */ spl = splbio(); - while (vp->v_numoutput) { - error = bufobj_wwait(&vp->v_bufobj, 0, 0); - if (error != 0) { - /* XXX: can't happen with a zero timeout ??? */ - splx(spl); - VI_UNLOCK(vp); - if (upgraded != 0) - VOP_LOCK(vp, LK_DOWNGRADE, td); - return (error); - } + error = bufobj_wwait(&vp->v_bufobj, 0, 0); + if (error != 0) { + /* XXX: can't happen with a zero timeout ??? */ + splx(spl); + VI_UNLOCK(vp); + if (upgraded != 0) + VOP_LOCK(vp, LK_DOWNGRADE, td); + return (error); } /* Flush dirty buffers */ - if (!TAILQ_EMPTY(&vp->v_dirtyblkhd)) { + if (bo->bo_dirty.bv_cnt > 0)) { splx(spl); VI_UNLOCK(vp); if ((error = VOP_FSYNC(vp, NOCRED, MNT_WAIT, td)) != 0) { @@ -158,8 +158,8 @@ ffs_rawread_sync(struct vnode *vp, struct thread *td) } VI_LOCK(vp); spl = splbio(); - if (vp->v_numoutput > 0 || - !TAILQ_EMPTY(&vp->v_dirtyblkhd)) + if (bo->bo_numoutput > 0 || + bo->bo_dirty.bv_cnt > 0)) panic("ffs_rawread_sync: dirty bufs"); } splx(spl); diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index 0d1ef2c..757de54 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -2068,7 +2068,7 @@ softdep_setup_freeblocks(ip, length, flags) VI_LOCK(vp); drain_output(vp, 1); restart: - TAILQ_FOREACH(bp, &vp->v_dirtyblkhd, b_bobufs) { + TAILQ_FOREACH(bp, &vp->v_bufobj.bo_dirty.bv_hd, b_bobufs) { if (((flags & IO_EXT) == 0 && (bp->b_xflags & BX_ALTDATA)) || ((flags & IO_NORMAL) == 0 && (bp->b_xflags & BX_ALTDATA) == 0)) @@ -4924,8 +4924,7 @@ softdep_fsync_mountdev(vp) panic("softdep_fsync_mountdev: vnode not a disk"); ACQUIRE_LOCK(&lk); VI_LOCK(vp); - for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) { - nbp = TAILQ_NEXT(bp, b_bobufs); + TAILQ_FOREACH_SAFE(bp, &vp->v_bufobj.bo_dirty.bv_hd, b_bobufs, nbp) { /* * If it is already scheduled, skip to the next buffer. */ @@ -4956,7 +4955,7 @@ softdep_fsync_mountdev(vp) * to start from a known point. */ VI_LOCK(vp); - nbp = TAILQ_FIRST(&vp->v_dirtyblkhd); + nbp = TAILQ_FIRST(&vp->v_bufobj.bo_dirty.bv_hd); } drain_output(vp, 1); VI_UNLOCK(vp); @@ -5030,7 +5029,7 @@ top: */ VI_LOCK(vp); drain_output(vp, 1); - bp = getdirtybuf(&TAILQ_FIRST(&vp->v_dirtyblkhd), + bp = getdirtybuf(&TAILQ_FIRST(&vp->v_bufobj.bo_dirty.bv_hd), VI_MTX(vp), MNT_WAIT); if (bp == NULL) { VI_UNLOCK(vp); @@ -5217,7 +5216,7 @@ loop: */ VI_LOCK(vp); drain_output(vp, 1); - if (TAILQ_FIRST(&vp->v_dirtyblkhd) == NULL) { + if (vp->v_bufobj.bo_dirty.bv_cnt == 0) { VI_UNLOCK(vp); FREE_LOCK(&lk); return (0); diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 4d9cc32..ad63665 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -1099,6 +1099,7 @@ ffs_sync(mp, waitfor, cred, td) struct ufsmount *ump = VFSTOUFS(mp); struct fs *fs; int error, count, wait, lockreq, allerror = 0; + struct bufobj *bo; fs = ump->um_fs; if (fs->fs_fmod != 0 && fs->fs_ronly != 0) { /* XXX */ @@ -1132,7 +1133,7 @@ loop: ip = VTOI(vp); if (vp->v_type == VNON || ((ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 && - TAILQ_EMPTY(&vp->v_dirtyblkhd))) { + vp->v_bufobj.bo_dirty.bv_cnt == 0)) { VI_UNLOCK(vp); continue; } @@ -1167,8 +1168,9 @@ loop: #endif devvp = ump->um_devvp; VI_LOCK(devvp); + bo = &devvp->v_bufobj; if (waitfor != MNT_LAZY && - (devvp->v_numoutput > 0 || TAILQ_FIRST(&devvp->v_dirtyblkhd))) { + (bo->bo_numoutput > 0 || bo->bo_dirty.bv_cnt > 0)) { vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY | LK_INTERLOCK, td); if ((error = VOP_FSYNC(devvp, cred, waitfor, td)) != 0) allerror = error; diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index 1532674..4bcf5f2 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -197,10 +197,9 @@ ffs_fsync(ap) s = splbio(); VI_LOCK(vp); loop: - TAILQ_FOREACH(bp, &vp->v_dirtyblkhd, b_bobufs) + TAILQ_FOREACH(bp, &vp->v_bufobj.bo_dirty.bv_hd, b_bobufs) bp->b_vflags &= ~BV_SCANNED; - for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) { - nbp = TAILQ_NEXT(bp, b_bobufs); + TAILQ_FOREACH_SAFE(bp, &vp->v_bufobj.bo_dirty.bv_hd, b_bobufs, nbp) { /* * Reasons to skip this buffer: it has already been considered * on this pass, this pass is the first time through on a @@ -273,7 +272,7 @@ loop: * to start from a known point. */ VI_LOCK(vp); - nbp = TAILQ_FIRST(&vp->v_dirtyblkhd); + nbp = TAILQ_FIRST(&vp->v_bufobj.bo_dirty.bv_hd); } /* * If we were asked to do this synchronously, then go back for @@ -298,7 +297,7 @@ loop: s = splbio(); VI_LOCK(vp); - if (!TAILQ_EMPTY(&vp->v_dirtyblkhd)) { + if (vp->v_bufobj.bo_dirty.bv_cnt > 0) { /* * Block devices associated with filesystems may * have new I/O requests posted for them even if |