summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-10-25 09:14:03 +0000
committerphk <phk@FreeBSD.org>2004-10-25 09:14:03 +0000
commit0e87ab8bc6e542c845f82c2bb526208587b200ad (patch)
tree200ff5f062ab8c134c56e5c8d6bd7fb2f35f6bad /sys/kern/vfs_subr.c
parent100e94e682f93c8aeae0f6683f1adab50f67b1f7 (diff)
downloadFreeBSD-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/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index e3dcaf9..a233c5a 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -952,13 +952,15 @@ vinvalbuf(vp, flags, cred, td, slpflag, slptimeo)
* no race conditions occur from this.
*/
for (error = 0;;) {
- if ((blist = TAILQ_FIRST(&vp->v_cleanblkhd)) != 0 &&
+ blist = TAILQ_FIRST(&vp->v_bufobj.bo_clean.bv_hd);
+ if (blist != NULL &&
flushbuflist(blist, flags, vp, slpflag, slptimeo, &error)) {
if (error)
break;
continue;
}
- if ((blist = TAILQ_FIRST(&vp->v_dirtyblkhd)) != 0 &&
+ blist = TAILQ_FIRST(&vp->v_bufobj.bo_dirty.bv_hd);
+ if (blist != NULL &&
flushbuflist(blist, flags, vp, slpflag, slptimeo, &error)) {
if (error)
break;
@@ -985,7 +987,7 @@ vinvalbuf(vp, flags, cred, td, slpflag, slptimeo)
VM_OBJECT_UNLOCK(object);
}
VI_LOCK(vp);
- } while (vp->v_numoutput > 0);
+ } while (bo->bo_numoutput > 0);
VI_UNLOCK(vp);
/*
@@ -1001,8 +1003,8 @@ vinvalbuf(vp, flags, cred, td, slpflag, slptimeo)
#ifdef INVARIANTS
VI_LOCK(vp);
if ((flags & (V_ALT | V_NORMAL)) == 0 &&
- (!TAILQ_EMPTY(&vp->v_dirtyblkhd) ||
- !TAILQ_EMPTY(&vp->v_cleanblkhd)))
+ (vp->v_bufobj.bo_dirty.bv_cnt > 0 ||
+ vp->v_bufobj.bo_clean.bv_cnt > 0))
panic("vinvalbuf: flush failed");
VI_UNLOCK(vp);
#endif
@@ -1398,7 +1400,7 @@ brelvp(struct buf *bp)
bo = bp->b_bufobj;
if (bp->b_xflags & (BX_VNDIRTY | BX_VNCLEAN))
buf_vlist_remove(bp);
- if ((vp->v_iflag & VI_ONWORKLST) && TAILQ_EMPTY(&vp->v_dirtyblkhd)) {
+ if ((vp->v_iflag & VI_ONWORKLST) && bo->bo_dirty.bv_cnt == 0) {
vp->v_iflag &= ~VI_ONWORKLST;
mtx_lock(&sync_mtx);
LIST_REMOVE(vp, v_synclist);
OpenPOWER on IntegriCloud