diff options
author | phk <phk@FreeBSD.org> | 2004-10-22 08:47:20 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2004-10-22 08:47:20 +0000 |
commit | 52a089c5262ab46beaee3c8aaedbd0c47da5b403 (patch) | |
tree | bc42241b941aa567a6f2ea05e7900cd388eae620 /sys/kern/vfs_cluster.c | |
parent | ec23a3b685c6fad6459a67f5c814bf8203a9c664 (diff) | |
download | FreeBSD-src-52a089c5262ab46beaee3c8aaedbd0c47da5b403.zip FreeBSD-src-52a089c5262ab46beaee3c8aaedbd0c47da5b403.tar.gz |
Add b_bufobj to struct buf which eventually will eliminate the need for b_vp.
Initialize b_bufobj for all buffers.
Make incore() and gbincore() take a bufobj instead of a vnode.
Make inmem() local to vfs_bio.c
Change a lot of VI_[UN]LOCK(bp->b_vp) to BO_[UN]LOCK(bp->b_bufobj)
also VI_MTX() to BO_MTX(),
Make buf_vlist_add() take a bufobj instead of a vnode.
Eliminate other uses of bp->b_vp where bp->b_bufobj will do.
Various minor polishing: remove "register", turn panic into KASSERT,
use new function declarations, TAILQ_FOREACH_SAFE() etc.
Diffstat (limited to 'sys/kern/vfs_cluster.c')
-rw-r--r-- | sys/kern/vfs_cluster.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index 2372c1e..1626929 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -149,7 +149,7 @@ cluster_read(vp, filesize, lblkno, size, cred, totread, seqcount, bpp) * Stop if the buffer does not exist or it * is invalid (about to go away?) */ - rbp = gbincore(vp, lblkno+i); + rbp = gbincore(&vp->v_bufobj, lblkno+i); if (rbp == NULL || (rbp->b_flags & B_INVAL)) break; @@ -770,7 +770,7 @@ cluster_wbuild(vp, size, start_lbn, len) * partake in the clustered write. */ VI_LOCK(vp); - if ((tbp = gbincore(vp, start_lbn)) == NULL || + if ((tbp = gbincore(&vp->v_bufobj, start_lbn)) == NULL || (tbp->b_vflags & BV_BKGRDINPROG)) { VI_UNLOCK(vp); ++start_lbn; @@ -825,6 +825,7 @@ cluster_wbuild(vp, size, start_lbn, len) bp->b_bcount = 0; bp->b_magic = tbp->b_magic; bp->b_op = tbp->b_op; + bp->b_bufobj = tbp->b_bufobj; bp->b_bufsize = 0; bp->b_npages = 0; if (tbp->b_wcred != NOCRED) @@ -859,7 +860,7 @@ cluster_wbuild(vp, size, start_lbn, len) * can't need to be written. */ VI_LOCK(vp); - if ((tbp = gbincore(vp, start_lbn)) == NULL || + if ((tbp = gbincore(&vp->v_bufobj, start_lbn)) == NULL || (tbp->b_vflags & BV_BKGRDINPROG)) { VI_UNLOCK(vp); splx(s); @@ -965,7 +966,7 @@ cluster_wbuild(vp, size, start_lbn, len) tbp->b_flags |= B_ASYNC; tbp->b_iocmd = BIO_WRITE; reassignbuf(tbp); /* put on clean list */ - bufobj_wref(&tbp->b_vp->v_bufobj); + bufobj_wref(tbp->b_bufobj); splx(s); BUF_KERNPROC(tbp); TAILQ_INSERT_TAIL(&bp->b_cluster.cluster_head, |