diff options
author | mckusick <mckusick@FreeBSD.org> | 1999-06-16 23:27:55 +0000 |
---|---|---|
committer | mckusick <mckusick@FreeBSD.org> | 1999-06-16 23:27:55 +0000 |
commit | 88e39a63db386a8e7939538fd1b350cbe663486b (patch) | |
tree | 002e7a32883a2178dd2164b02c296d429dee5cfd | |
parent | 97a0215ac1c4c057e39723365f18d612e9304581 (diff) | |
download | FreeBSD-src-88e39a63db386a8e7939538fd1b350cbe663486b.zip FreeBSD-src-88e39a63db386a8e7939538fd1b350cbe663486b.tar.gz |
Add a vnode argument to VOP_BWRITE to get rid of the last vnode
operator special case. Delete special case code from vnode_if.sh,
vnode_if.src, umap_vnops.c, and null_vnops.c.
-rw-r--r-- | contrib/sys/softupdates/ffs_softdep.c | 26 | ||||
-rw-r--r-- | sys/contrib/softupdates/ffs_softdep.c | 26 | ||||
-rw-r--r-- | sys/fs/nullfs/null_vnops.c | 58 | ||||
-rw-r--r-- | sys/fs/umapfs/umap_vnops.c | 48 | ||||
-rw-r--r-- | sys/fs/unionfs/union_vnops.c | 17 | ||||
-rw-r--r-- | sys/gnu/ext2fs/ext2_lookup.c | 8 | ||||
-rw-r--r-- | sys/gnu/fs/ext2fs/ext2_lookup.c | 8 | ||||
-rw-r--r-- | sys/kern/vfs_bio.c | 14 | ||||
-rw-r--r-- | sys/kern/vfs_export.c | 8 | ||||
-rw-r--r-- | sys/kern/vfs_subr.c | 8 | ||||
-rw-r--r-- | sys/kern/vnode_if.pl | 47 | ||||
-rw-r--r-- | sys/kern/vnode_if.sh | 47 | ||||
-rw-r--r-- | sys/kern/vnode_if.src | 11 | ||||
-rw-r--r-- | sys/miscfs/nullfs/null_vnops.c | 58 | ||||
-rw-r--r-- | sys/miscfs/umapfs/umap_vnops.c | 48 | ||||
-rw-r--r-- | sys/miscfs/union/union_vnops.c | 17 | ||||
-rw-r--r-- | sys/nfs/nfs_bio.c | 6 | ||||
-rw-r--r-- | sys/nfs/nfs_vnops.c | 4 | ||||
-rw-r--r-- | sys/nfsclient/nfs_bio.c | 6 | ||||
-rw-r--r-- | sys/nfsclient/nfs_vnops.c | 4 | ||||
-rw-r--r-- | sys/tools/vnode_if.awk | 47 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 26 | ||||
-rw-r--r-- | sys/ufs/ufs/ufs_lookup.c | 6 | ||||
-rw-r--r-- | sys/ufs/ufs/ufs_vnops.c | 6 |
24 files changed, 106 insertions, 448 deletions
diff --git a/contrib/sys/softupdates/ffs_softdep.c b/contrib/sys/softupdates/ffs_softdep.c index 8521e3b..df2791f 100644 --- a/contrib/sys/softupdates/ffs_softdep.c +++ b/contrib/sys/softupdates/ffs_softdep.c @@ -53,7 +53,7 @@ * SUCH DAMAGE. * * from: @(#)ffs_softdep.c 9.40 (McKusick) 6/15/99 - * $Id: ffs_softdep.c,v 1.29 1999/05/22 04:43:04 julian Exp $ + * $Id: ffs_softdep.c,v 1.30 1999/06/15 23:37:29 mckusick Exp $ */ /* @@ -3533,7 +3533,8 @@ softdep_update_inodeblock(ip, bp, waitfor) } gotit = getdirtybuf(&inodedep->id_buf, MNT_WAIT); FREE_LOCK(&lk); - if (gotit && (error = VOP_BWRITE(inodedep->id_buf)) != 0) + if (gotit && + (error = VOP_BWRITE(inodedep->id_buf->b_vp, inodedep->id_buf)) != 0) softdep_error("softdep_update_inodeblock: bwrite", error); if ((inodedep->id_state & DEPCOMPLETE) == 0) panic("softdep_update_inodeblock: update failed"); @@ -3666,7 +3667,7 @@ softdep_fsync(vp) */ error = bread(pvp, lbn, blksize(fs, VTOI(pvp), lbn), p->p_ucred, &bp); - ret = VOP_BWRITE(bp); + ret = VOP_BWRITE(bp->b_vp, bp); vput(pvp); if (error != 0) return (error); @@ -3808,7 +3809,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3825,7 +3826,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3842,7 +3843,7 @@ loop: if (getdirtybuf(&nbp, MNT_WAIT) == 0) goto restart; FREE_LOCK(&lk); - if ((error = VOP_BWRITE(nbp)) != 0) { + if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3896,7 +3897,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3917,7 +3918,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -4027,7 +4028,7 @@ flush_inodedep_deps(fs, ino) FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(bp); - } else if ((error = VOP_BWRITE(bp)) != 0) { + } else if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) { ACQUIRE_LOCK(&lk); return (error); } @@ -4049,7 +4050,7 @@ flush_inodedep_deps(fs, ino) FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(bp); - } else if ((error = VOP_BWRITE(bp)) != 0) { + } else if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) { ACQUIRE_LOCK(&lk); return (error); } @@ -4136,7 +4137,8 @@ flush_pagedep_deps(pvp, mp, diraddhdp) gotit = getdirtybuf(&inodedep->id_buf,MNT_WAIT); FREE_LOCK(&lk); if (gotit && - (error = VOP_BWRITE(inodedep->id_buf)) != 0) + (error = VOP_BWRITE(inodedep->id_buf->b_vp, + inodedep->id_buf)) != 0) break; ACQUIRE_LOCK(&lk); } @@ -4151,7 +4153,7 @@ flush_pagedep_deps(pvp, mp, diraddhdp) fsbtodb(ump->um_fs, ino_to_fsba(ump->um_fs, inum)), (int)ump->um_fs->fs_bsize, NOCRED, &bp)) != 0) break; - if ((error = VOP_BWRITE(bp)) != 0) + if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) break; ACQUIRE_LOCK(&lk); if (dap == LIST_FIRST(diraddhdp)) diff --git a/sys/contrib/softupdates/ffs_softdep.c b/sys/contrib/softupdates/ffs_softdep.c index 8521e3b..df2791f 100644 --- a/sys/contrib/softupdates/ffs_softdep.c +++ b/sys/contrib/softupdates/ffs_softdep.c @@ -53,7 +53,7 @@ * SUCH DAMAGE. * * from: @(#)ffs_softdep.c 9.40 (McKusick) 6/15/99 - * $Id: ffs_softdep.c,v 1.29 1999/05/22 04:43:04 julian Exp $ + * $Id: ffs_softdep.c,v 1.30 1999/06/15 23:37:29 mckusick Exp $ */ /* @@ -3533,7 +3533,8 @@ softdep_update_inodeblock(ip, bp, waitfor) } gotit = getdirtybuf(&inodedep->id_buf, MNT_WAIT); FREE_LOCK(&lk); - if (gotit && (error = VOP_BWRITE(inodedep->id_buf)) != 0) + if (gotit && + (error = VOP_BWRITE(inodedep->id_buf->b_vp, inodedep->id_buf)) != 0) softdep_error("softdep_update_inodeblock: bwrite", error); if ((inodedep->id_state & DEPCOMPLETE) == 0) panic("softdep_update_inodeblock: update failed"); @@ -3666,7 +3667,7 @@ softdep_fsync(vp) */ error = bread(pvp, lbn, blksize(fs, VTOI(pvp), lbn), p->p_ucred, &bp); - ret = VOP_BWRITE(bp); + ret = VOP_BWRITE(bp->b_vp, bp); vput(pvp); if (error != 0) return (error); @@ -3808,7 +3809,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3825,7 +3826,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3842,7 +3843,7 @@ loop: if (getdirtybuf(&nbp, MNT_WAIT) == 0) goto restart; FREE_LOCK(&lk); - if ((error = VOP_BWRITE(nbp)) != 0) { + if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3896,7 +3897,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3917,7 +3918,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -4027,7 +4028,7 @@ flush_inodedep_deps(fs, ino) FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(bp); - } else if ((error = VOP_BWRITE(bp)) != 0) { + } else if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) { ACQUIRE_LOCK(&lk); return (error); } @@ -4049,7 +4050,7 @@ flush_inodedep_deps(fs, ino) FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(bp); - } else if ((error = VOP_BWRITE(bp)) != 0) { + } else if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) { ACQUIRE_LOCK(&lk); return (error); } @@ -4136,7 +4137,8 @@ flush_pagedep_deps(pvp, mp, diraddhdp) gotit = getdirtybuf(&inodedep->id_buf,MNT_WAIT); FREE_LOCK(&lk); if (gotit && - (error = VOP_BWRITE(inodedep->id_buf)) != 0) + (error = VOP_BWRITE(inodedep->id_buf->b_vp, + inodedep->id_buf)) != 0) break; ACQUIRE_LOCK(&lk); } @@ -4151,7 +4153,7 @@ flush_pagedep_deps(pvp, mp, diraddhdp) fsbtodb(ump->um_fs, ino_to_fsba(ump->um_fs, inum)), (int)ump->um_fs->fs_bsize, NOCRED, &bp)) != 0) break; - if ((error = VOP_BWRITE(bp)) != 0) + if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) break; ACQUIRE_LOCK(&lk); if (dap == LIST_FIRST(diraddhdp)) diff --git a/sys/fs/nullfs/null_vnops.c b/sys/fs/nullfs/null_vnops.c index db5c341..fdcdc38 100644 --- a/sys/fs/nullfs/null_vnops.c +++ b/sys/fs/nullfs/null_vnops.c @@ -37,11 +37,11 @@ * * Ancestors: * @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92 - * $Id: null_vnops.c,v 1.31 1999/01/27 22:42:06 dillon Exp $ + * $Id: null_vnops.c,v 1.32 1999/01/28 00:57:50 dillon Exp $ * ...and... * @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project * - * $Id: null_vnops.c,v 1.31 1999/01/27 22:42:06 dillon Exp $ + * $Id: null_vnops.c,v 1.32 1999/01/28 00:57:50 dillon Exp $ */ /* @@ -192,7 +192,6 @@ SYSCTL_INT(_debug, OID_AUTO, nullfs_bug_bypass, CTLFLAG_RW, &null_bug_bypass, 0, ""); static int null_access __P((struct vop_access_args *ap)); -static int null_bwrite __P((struct vop_bwrite_args *ap)); static int null_getattr __P((struct vop_getattr_args *ap)); static int null_inactive __P((struct vop_inactive_args *ap)); static int null_lock __P((struct vop_lock_args *ap)); @@ -200,7 +199,6 @@ static int null_lookup __P((struct vop_lookup_args *ap)); static int null_print __P((struct vop_print_args *ap)); static int null_reclaim __P((struct vop_reclaim_args *ap)); static int null_setattr __P((struct vop_setattr_args *ap)); -static int null_strategy __P((struct vop_strategy_args *ap)); static int null_unlock __P((struct vop_unlock_args *ap)); /* @@ -595,63 +593,12 @@ null_print(ap) } /* - * XXX - vop_strategy must be hand coded because it has no - * vnode in its arguments. - * This goes away with a merged VM/buffer cache. - */ -static int -null_strategy(ap) - struct vop_strategy_args /* { - struct buf *a_bp; - } */ *ap; -{ - struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = NULLVPTOLOWERVP(bp->b_vp); - - error = VOP_STRATEGY(bp->b_vp, bp); - - bp->b_vp = savedvp; - - return (error); -} - -/* - * XXX - like vop_strategy, vop_bwrite must be hand coded because it has no - * vnode in its arguments. - * This goes away with a merged VM/buffer cache. - */ -static int -null_bwrite(ap) - struct vop_bwrite_args /* { - struct buf *a_bp; - } */ *ap; -{ - struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = NULLVPTOLOWERVP(bp->b_vp); - - error = VOP_BWRITE(bp); - - bp->b_vp = savedvp; - - return (error); -} - -/* * Global vfs data structures */ vop_t **null_vnodeop_p; static struct vnodeopv_entry_desc null_vnodeop_entries[] = { { &vop_default_desc, (vop_t *) null_bypass }, { &vop_access_desc, (vop_t *) null_access }, - { &vop_bwrite_desc, (vop_t *) null_bwrite }, { &vop_getattr_desc, (vop_t *) null_getattr }, { &vop_inactive_desc, (vop_t *) null_inactive }, { &vop_lock_desc, (vop_t *) null_lock }, @@ -659,7 +606,6 @@ static struct vnodeopv_entry_desc null_vnodeop_entries[] = { { &vop_print_desc, (vop_t *) null_print }, { &vop_reclaim_desc, (vop_t *) null_reclaim }, { &vop_setattr_desc, (vop_t *) null_setattr }, - { &vop_strategy_desc, (vop_t *) null_strategy }, { &vop_unlock_desc, (vop_t *) null_unlock }, { NULL, NULL } }; diff --git a/sys/fs/umapfs/umap_vnops.c b/sys/fs/umapfs/umap_vnops.c index 893e1e5..eff7841 100644 --- a/sys/fs/umapfs/umap_vnops.c +++ b/sys/fs/umapfs/umap_vnops.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)umap_vnops.c 8.6 (Berkeley) 5/22/95 - * $Id: umap_vnops.c,v 1.25 1998/07/30 17:40:45 bde Exp $ + * $Id: umap_vnops.c,v 1.26 1998/12/07 21:58:34 archie Exp $ */ /* @@ -57,7 +57,6 @@ static int umap_bug_bypass = 0; /* for debugging: enables bypass printf'ing */ SYSCTL_INT(_debug, OID_AUTO, umapfs_bug_bypass, CTLFLAG_RW, &umap_bug_bypass, 0, ""); -static int umap_bwrite __P((struct vop_bwrite_args *ap)); static int umap_bypass __P((struct vop_generic_args *ap)); static int umap_getattr __P((struct vop_getattr_args *ap)); static int umap_inactive __P((struct vop_inactive_args *ap)); @@ -65,7 +64,6 @@ static int umap_lock __P((struct vop_lock_args *ap)); static int umap_print __P((struct vop_print_args *ap)); static int umap_reclaim __P((struct vop_reclaim_args *ap)); static int umap_rename __P((struct vop_rename_args *ap)); -static int umap_strategy __P((struct vop_strategy_args *ap)); static int umap_unlock __P((struct vop_unlock_args *ap)); /* @@ -433,48 +431,6 @@ umap_reclaim(ap) } static int -umap_strategy(ap) - struct vop_strategy_args /* { - struct vnode *a_vp; - struct buf *a_bp; - } */ *ap; -{ - struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = UMAPVPTOLOWERVP(bp->b_vp); - - error = VOP_STRATEGY(bp->b_vp, ap->a_bp); - - bp->b_vp = savedvp; - - return (error); -} - -static int -umap_bwrite(ap) - struct vop_bwrite_args /* { - struct buf *a_bp; - } */ *ap; -{ - struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = UMAPVPTOLOWERVP(bp->b_vp); - - error = VOP_BWRITE(ap->a_bp); - - bp->b_vp = savedvp; - - return (error); -} - - -static int umap_print(ap) struct vop_print_args /* { struct vnode *a_vp; @@ -549,14 +505,12 @@ umap_rename(ap) vop_t **umap_vnodeop_p; static struct vnodeopv_entry_desc umap_vnodeop_entries[] = { { &vop_default_desc, (vop_t *) umap_bypass }, - { &vop_bwrite_desc, (vop_t *) umap_bwrite }, { &vop_getattr_desc, (vop_t *) umap_getattr }, { &vop_inactive_desc, (vop_t *) umap_inactive }, { &vop_lock_desc, (vop_t *) umap_lock }, { &vop_print_desc, (vop_t *) umap_print }, { &vop_reclaim_desc, (vop_t *) umap_reclaim }, { &vop_rename_desc, (vop_t *) umap_rename }, - { &vop_strategy_desc, (vop_t *) umap_strategy }, { &vop_unlock_desc, (vop_t *) umap_unlock }, { NULL, NULL } }; diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c index ba9b2a3..6b9681c 100644 --- a/sys/fs/unionfs/union_vnops.c +++ b/sys/fs/unionfs/union_vnops.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * @(#)union_vnops.c 8.32 (Berkeley) 6/23/95 - * $Id: union_vnops.c,v 1.59 1998/12/14 05:00:59 dillon Exp $ + * $Id: union_vnops.c,v 1.60 1999/01/27 22:42:08 dillon Exp $ */ #include <sys/param.h> @@ -1734,24 +1734,17 @@ union_strategy(ap) } */ *ap; { struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = OTHERVP(bp->b_vp); + struct vnode *othervp = OTHERVP(bp->b_vp); #ifdef DIAGNOSTIC - if (bp->b_vp == NULLVP) + if (othervp == NULLVP) panic("union_strategy: nil vp"); if (((bp->b_flags & B_READ) == 0) && - (bp->b_vp == LOWERVP(savedvp))) + (othervp == LOWERVP(bp->b_vp))) panic("union_strategy: writing to lowervp"); #endif - error = VOP_STRATEGY(bp->b_vp, bp); - bp->b_vp = savedvp; - - return (error); + return (VOP_STRATEGY(othervp, bp)); } /* diff --git a/sys/gnu/ext2fs/ext2_lookup.c b/sys/gnu/ext2fs/ext2_lookup.c index 8eb5ba8..9df8fd6 100644 --- a/sys/gnu/ext2fs/ext2_lookup.c +++ b/sys/gnu/ext2fs/ext2_lookup.c @@ -841,7 +841,7 @@ ext2_direnter(ip, dvp, cnp) ep = (struct ext2_dir_entry *)((char *)ep + dsize); } bcopy((caddr_t)&newdir, (caddr_t)ep, (u_int)newentrysize); - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; if (!error && dp->i_endoff && dp->i_endoff < dp->i_size) error = UFS_TRUNCATE(dvp, (off_t)dp->i_endoff, IO_SYNC, @@ -880,7 +880,7 @@ ext2_dirremove(dvp, cnp) UFS_BLKATOFF(dvp, (off_t)dp->i_offset, (char **)&ep, &bp)) != 0) return (error); ep->inode = 0; - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } @@ -891,7 +891,7 @@ ext2_dirremove(dvp, cnp) (char **)&ep, &bp)) != 0) return (error); ep->rec_len += dp->i_reclen; - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } @@ -914,7 +914,7 @@ ext2_dirrewrite(dp, ip, cnp) if ((error = UFS_BLKATOFF(vdp, (off_t)dp->i_offset, (char **)&ep, &bp)) != 0) return (error); ep->inode = ip->i_number; - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } diff --git a/sys/gnu/fs/ext2fs/ext2_lookup.c b/sys/gnu/fs/ext2fs/ext2_lookup.c index 8eb5ba8..9df8fd6 100644 --- a/sys/gnu/fs/ext2fs/ext2_lookup.c +++ b/sys/gnu/fs/ext2fs/ext2_lookup.c @@ -841,7 +841,7 @@ ext2_direnter(ip, dvp, cnp) ep = (struct ext2_dir_entry *)((char *)ep + dsize); } bcopy((caddr_t)&newdir, (caddr_t)ep, (u_int)newentrysize); - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; if (!error && dp->i_endoff && dp->i_endoff < dp->i_size) error = UFS_TRUNCATE(dvp, (off_t)dp->i_endoff, IO_SYNC, @@ -880,7 +880,7 @@ ext2_dirremove(dvp, cnp) UFS_BLKATOFF(dvp, (off_t)dp->i_offset, (char **)&ep, &bp)) != 0) return (error); ep->inode = 0; - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } @@ -891,7 +891,7 @@ ext2_dirremove(dvp, cnp) (char **)&ep, &bp)) != 0) return (error); ep->rec_len += dp->i_reclen; - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } @@ -914,7 +914,7 @@ ext2_dirrewrite(dp, ip, cnp) if ((error = UFS_BLKATOFF(vdp, (off_t)dp->i_offset, (char **)&ep, &bp)) != 0) return (error); ep->inode = ip->i_number; - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 88e0956..43acafb 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -11,7 +11,7 @@ * 2. Absolutely no warranty of function or purpose is made by the author * John S. Dyson. * - * $Id: vfs_bio.c,v 1.212 1999/06/15 23:37:23 mckusick Exp $ + * $Id: vfs_bio.c,v 1.213 1999/06/16 03:19:04 tegge Exp $ */ /* @@ -699,7 +699,7 @@ void bawrite(struct buf * bp) { bp->b_flags |= B_ASYNC; - (void) VOP_BWRITE(bp); + (void) VOP_BWRITE(bp->b_vp, bp); } /* @@ -714,7 +714,7 @@ int bowrite(struct buf * bp) { bp->b_flags |= B_ORDERED | B_ASYNC; - return (VOP_BWRITE(bp)); + return (VOP_BWRITE(bp->b_vp, bp)); } /* @@ -1155,7 +1155,7 @@ vfs_bio_awrite(struct buf * bp) * XXX returns b_bufsize instead of b_bcount for nwritten? */ nwritten = bp->b_bufsize; - (void) VOP_BWRITE(bp); + (void) VOP_BWRITE(bp->b_vp, bp); return nwritten; } @@ -1880,7 +1880,7 @@ loop: ) { if (bp->b_flags & B_DELWRI) { bp->b_flags |= B_NOCACHE; - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); } else { if ((bp->b_flags & B_VMIO) && (LIST_FIRST(&bp->b_dep) == NULL)) { @@ -1888,7 +1888,7 @@ loop: brelse(bp); } else { bp->b_flags |= B_NOCACHE; - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); } } goto loop; @@ -1925,7 +1925,7 @@ loop: */ if ((bp->b_flags & (B_CACHE|B_DELWRI)) == B_DELWRI) { - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); goto loop; } diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index 982850f..bb8fa53 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 - * $Id: vfs_subr.c,v 1.200 1999/05/31 11:27:44 phk Exp $ + * $Id: vfs_subr.c,v 1.201 1999/06/15 23:37:25 mckusick Exp $ */ /* @@ -650,12 +650,12 @@ vinvalbuf(vp, flags, cred, p, slpflag, slptimeo) } else { bremfree(bp); bp->b_flags |= (B_BUSY | B_ASYNC); - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); } } else { bremfree(bp); bp->b_flags |= B_BUSY; - (void) VOP_BWRITE(bp); + (void) VOP_BWRITE(bp->b_vp, bp); } break; } @@ -778,7 +778,7 @@ restartsync: } else { bp->b_flags &= ~B_ASYNC; } - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); } goto restartsync; } diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 982850f..bb8fa53 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 - * $Id: vfs_subr.c,v 1.200 1999/05/31 11:27:44 phk Exp $ + * $Id: vfs_subr.c,v 1.201 1999/06/15 23:37:25 mckusick Exp $ */ /* @@ -650,12 +650,12 @@ vinvalbuf(vp, flags, cred, p, slpflag, slptimeo) } else { bremfree(bp); bp->b_flags |= (B_BUSY | B_ASYNC); - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); } } else { bremfree(bp); bp->b_flags |= B_BUSY; - (void) VOP_BWRITE(bp); + (void) VOP_BWRITE(bp->b_vp, bp); } break; } @@ -778,7 +778,7 @@ restartsync: } else { bp->b_flags &= ~B_ASYNC; } - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); } goto restartsync; } diff --git a/sys/kern/vnode_if.pl b/sys/kern/vnode_if.pl index 87517e6..07e0e91 100644 --- a/sys/kern/vnode_if.pl +++ b/sys/kern/vnode_if.pl @@ -32,7 +32,7 @@ # SUCH DAMAGE. # # @(#)vnode_if.sh 8.1 (Berkeley) 6/10/93 -# $Id: vnode_if.sh,v 1.16 1998/11/10 09:04:09 peter Exp $ +# $Id: vnode_if.sh,v 1.17 1999/02/28 11:30:00 bde Exp $ # # Script to produce VFS front-end sugar. @@ -350,48 +350,3 @@ $AWK 'function kill_surrounding_ws (s) { printf "\n"; }' < $SRC >> $CFILE - -# THINGS THAT DON'T WORK RIGHT YET. -# -# vop_bwrite doesn't take any vnodes as arguments. This means that it -# can't function successfully through a bypass routine. -# -# To get around this problem for now we handle it as a special case. - -cat << END_OF_SPECIAL_CASES >> $HEADER -#include <sys/buf.h> - -struct vop_bwrite_args { - struct vnodeop_desc *a_desc; - struct buf *a_bp; -}; -extern struct vnodeop_desc vop_bwrite_desc; -static __inline int VOP_BWRITE __P(( - struct buf *bp)); -static __inline int VOP_BWRITE(bp) - struct buf *bp; -{ - struct vop_bwrite_args a; - - a.a_desc = VDESC(vop_bwrite); - a.a_bp = bp; - return (VCALL((bp)->b_vp, VOFFSET(vop_bwrite), &a)); -} -END_OF_SPECIAL_CASES - -cat << END_OF_SPECIAL_CASES >> $CFILE -static int vop_bwrite_vp_offsets[] = { - VDESC_NO_OFFSET -}; -struct vnodeop_desc vop_bwrite_desc = { - 0, - "vop_bwrite", - 0, - vop_bwrite_vp_offsets, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - NULL, -}; -END_OF_SPECIAL_CASES diff --git a/sys/kern/vnode_if.sh b/sys/kern/vnode_if.sh index 87517e6..07e0e91 100644 --- a/sys/kern/vnode_if.sh +++ b/sys/kern/vnode_if.sh @@ -32,7 +32,7 @@ # SUCH DAMAGE. # # @(#)vnode_if.sh 8.1 (Berkeley) 6/10/93 -# $Id: vnode_if.sh,v 1.16 1998/11/10 09:04:09 peter Exp $ +# $Id: vnode_if.sh,v 1.17 1999/02/28 11:30:00 bde Exp $ # # Script to produce VFS front-end sugar. @@ -350,48 +350,3 @@ $AWK 'function kill_surrounding_ws (s) { printf "\n"; }' < $SRC >> $CFILE - -# THINGS THAT DON'T WORK RIGHT YET. -# -# vop_bwrite doesn't take any vnodes as arguments. This means that it -# can't function successfully through a bypass routine. -# -# To get around this problem for now we handle it as a special case. - -cat << END_OF_SPECIAL_CASES >> $HEADER -#include <sys/buf.h> - -struct vop_bwrite_args { - struct vnodeop_desc *a_desc; - struct buf *a_bp; -}; -extern struct vnodeop_desc vop_bwrite_desc; -static __inline int VOP_BWRITE __P(( - struct buf *bp)); -static __inline int VOP_BWRITE(bp) - struct buf *bp; -{ - struct vop_bwrite_args a; - - a.a_desc = VDESC(vop_bwrite); - a.a_bp = bp; - return (VCALL((bp)->b_vp, VOFFSET(vop_bwrite), &a)); -} -END_OF_SPECIAL_CASES - -cat << END_OF_SPECIAL_CASES >> $CFILE -static int vop_bwrite_vp_offsets[] = { - VDESC_NO_OFFSET -}; -struct vnodeop_desc vop_bwrite_desc = { - 0, - "vop_bwrite", - 0, - vop_bwrite_vp_offsets, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - NULL, -}; -END_OF_SPECIAL_CASES diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src index c53ae2a..b60ff4a 100644 --- a/sys/kern/vnode_if.src +++ b/sys/kern/vnode_if.src @@ -31,7 +31,7 @@ # SUCH DAMAGE. # # @(#)vnode_if.src 8.12 (Berkeley) 5/14/95 -# $Id: vnode_if.src,v 1.19 1998/09/05 14:13:06 phk Exp $ +# $Id: vnode_if.src,v 1.20 1999/03/27 03:08:07 eivind Exp $ # # @@ -485,8 +485,9 @@ vop_freeblks { }; # -# Needs work: no vp? +#% bwrite vp L L L # -#vop_bwrite { -# IN struct buf *bp; -#}; +vop_bwrite { + IN struct vnode *vp; + IN struct buf *bp; +}; diff --git a/sys/miscfs/nullfs/null_vnops.c b/sys/miscfs/nullfs/null_vnops.c index db5c341..fdcdc38 100644 --- a/sys/miscfs/nullfs/null_vnops.c +++ b/sys/miscfs/nullfs/null_vnops.c @@ -37,11 +37,11 @@ * * Ancestors: * @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92 - * $Id: null_vnops.c,v 1.31 1999/01/27 22:42:06 dillon Exp $ + * $Id: null_vnops.c,v 1.32 1999/01/28 00:57:50 dillon Exp $ * ...and... * @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project * - * $Id: null_vnops.c,v 1.31 1999/01/27 22:42:06 dillon Exp $ + * $Id: null_vnops.c,v 1.32 1999/01/28 00:57:50 dillon Exp $ */ /* @@ -192,7 +192,6 @@ SYSCTL_INT(_debug, OID_AUTO, nullfs_bug_bypass, CTLFLAG_RW, &null_bug_bypass, 0, ""); static int null_access __P((struct vop_access_args *ap)); -static int null_bwrite __P((struct vop_bwrite_args *ap)); static int null_getattr __P((struct vop_getattr_args *ap)); static int null_inactive __P((struct vop_inactive_args *ap)); static int null_lock __P((struct vop_lock_args *ap)); @@ -200,7 +199,6 @@ static int null_lookup __P((struct vop_lookup_args *ap)); static int null_print __P((struct vop_print_args *ap)); static int null_reclaim __P((struct vop_reclaim_args *ap)); static int null_setattr __P((struct vop_setattr_args *ap)); -static int null_strategy __P((struct vop_strategy_args *ap)); static int null_unlock __P((struct vop_unlock_args *ap)); /* @@ -595,63 +593,12 @@ null_print(ap) } /* - * XXX - vop_strategy must be hand coded because it has no - * vnode in its arguments. - * This goes away with a merged VM/buffer cache. - */ -static int -null_strategy(ap) - struct vop_strategy_args /* { - struct buf *a_bp; - } */ *ap; -{ - struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = NULLVPTOLOWERVP(bp->b_vp); - - error = VOP_STRATEGY(bp->b_vp, bp); - - bp->b_vp = savedvp; - - return (error); -} - -/* - * XXX - like vop_strategy, vop_bwrite must be hand coded because it has no - * vnode in its arguments. - * This goes away with a merged VM/buffer cache. - */ -static int -null_bwrite(ap) - struct vop_bwrite_args /* { - struct buf *a_bp; - } */ *ap; -{ - struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = NULLVPTOLOWERVP(bp->b_vp); - - error = VOP_BWRITE(bp); - - bp->b_vp = savedvp; - - return (error); -} - -/* * Global vfs data structures */ vop_t **null_vnodeop_p; static struct vnodeopv_entry_desc null_vnodeop_entries[] = { { &vop_default_desc, (vop_t *) null_bypass }, { &vop_access_desc, (vop_t *) null_access }, - { &vop_bwrite_desc, (vop_t *) null_bwrite }, { &vop_getattr_desc, (vop_t *) null_getattr }, { &vop_inactive_desc, (vop_t *) null_inactive }, { &vop_lock_desc, (vop_t *) null_lock }, @@ -659,7 +606,6 @@ static struct vnodeopv_entry_desc null_vnodeop_entries[] = { { &vop_print_desc, (vop_t *) null_print }, { &vop_reclaim_desc, (vop_t *) null_reclaim }, { &vop_setattr_desc, (vop_t *) null_setattr }, - { &vop_strategy_desc, (vop_t *) null_strategy }, { &vop_unlock_desc, (vop_t *) null_unlock }, { NULL, NULL } }; diff --git a/sys/miscfs/umapfs/umap_vnops.c b/sys/miscfs/umapfs/umap_vnops.c index 893e1e5..eff7841 100644 --- a/sys/miscfs/umapfs/umap_vnops.c +++ b/sys/miscfs/umapfs/umap_vnops.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)umap_vnops.c 8.6 (Berkeley) 5/22/95 - * $Id: umap_vnops.c,v 1.25 1998/07/30 17:40:45 bde Exp $ + * $Id: umap_vnops.c,v 1.26 1998/12/07 21:58:34 archie Exp $ */ /* @@ -57,7 +57,6 @@ static int umap_bug_bypass = 0; /* for debugging: enables bypass printf'ing */ SYSCTL_INT(_debug, OID_AUTO, umapfs_bug_bypass, CTLFLAG_RW, &umap_bug_bypass, 0, ""); -static int umap_bwrite __P((struct vop_bwrite_args *ap)); static int umap_bypass __P((struct vop_generic_args *ap)); static int umap_getattr __P((struct vop_getattr_args *ap)); static int umap_inactive __P((struct vop_inactive_args *ap)); @@ -65,7 +64,6 @@ static int umap_lock __P((struct vop_lock_args *ap)); static int umap_print __P((struct vop_print_args *ap)); static int umap_reclaim __P((struct vop_reclaim_args *ap)); static int umap_rename __P((struct vop_rename_args *ap)); -static int umap_strategy __P((struct vop_strategy_args *ap)); static int umap_unlock __P((struct vop_unlock_args *ap)); /* @@ -433,48 +431,6 @@ umap_reclaim(ap) } static int -umap_strategy(ap) - struct vop_strategy_args /* { - struct vnode *a_vp; - struct buf *a_bp; - } */ *ap; -{ - struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = UMAPVPTOLOWERVP(bp->b_vp); - - error = VOP_STRATEGY(bp->b_vp, ap->a_bp); - - bp->b_vp = savedvp; - - return (error); -} - -static int -umap_bwrite(ap) - struct vop_bwrite_args /* { - struct buf *a_bp; - } */ *ap; -{ - struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = UMAPVPTOLOWERVP(bp->b_vp); - - error = VOP_BWRITE(ap->a_bp); - - bp->b_vp = savedvp; - - return (error); -} - - -static int umap_print(ap) struct vop_print_args /* { struct vnode *a_vp; @@ -549,14 +505,12 @@ umap_rename(ap) vop_t **umap_vnodeop_p; static struct vnodeopv_entry_desc umap_vnodeop_entries[] = { { &vop_default_desc, (vop_t *) umap_bypass }, - { &vop_bwrite_desc, (vop_t *) umap_bwrite }, { &vop_getattr_desc, (vop_t *) umap_getattr }, { &vop_inactive_desc, (vop_t *) umap_inactive }, { &vop_lock_desc, (vop_t *) umap_lock }, { &vop_print_desc, (vop_t *) umap_print }, { &vop_reclaim_desc, (vop_t *) umap_reclaim }, { &vop_rename_desc, (vop_t *) umap_rename }, - { &vop_strategy_desc, (vop_t *) umap_strategy }, { &vop_unlock_desc, (vop_t *) umap_unlock }, { NULL, NULL } }; diff --git a/sys/miscfs/union/union_vnops.c b/sys/miscfs/union/union_vnops.c index ba9b2a3..6b9681c 100644 --- a/sys/miscfs/union/union_vnops.c +++ b/sys/miscfs/union/union_vnops.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * @(#)union_vnops.c 8.32 (Berkeley) 6/23/95 - * $Id: union_vnops.c,v 1.59 1998/12/14 05:00:59 dillon Exp $ + * $Id: union_vnops.c,v 1.60 1999/01/27 22:42:08 dillon Exp $ */ #include <sys/param.h> @@ -1734,24 +1734,17 @@ union_strategy(ap) } */ *ap; { struct buf *bp = ap->a_bp; - int error; - struct vnode *savedvp; - - savedvp = bp->b_vp; - bp->b_vp = OTHERVP(bp->b_vp); + struct vnode *othervp = OTHERVP(bp->b_vp); #ifdef DIAGNOSTIC - if (bp->b_vp == NULLVP) + if (othervp == NULLVP) panic("union_strategy: nil vp"); if (((bp->b_flags & B_READ) == 0) && - (bp->b_vp == LOWERVP(savedvp))) + (othervp == LOWERVP(bp->b_vp))) panic("union_strategy: writing to lowervp"); #endif - error = VOP_STRATEGY(bp->b_vp, bp); - bp->b_vp = savedvp; - - return (error); + return (VOP_STRATEGY(othervp, bp)); } /* diff --git a/sys/nfs/nfs_bio.c b/sys/nfs/nfs_bio.c index c7029d6..fe055c0 100644 --- a/sys/nfs/nfs_bio.c +++ b/sys/nfs/nfs_bio.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_bio.c 8.9 (Berkeley) 3/30/95 - * $Id: nfs_bio.c,v 1.71 1999/05/06 20:00:30 phk Exp $ + * $Id: nfs_bio.c,v 1.72 1999/06/05 05:25:37 peter Exp $ */ @@ -894,7 +894,7 @@ again: if (bp->b_dirtyend > 0 && (on > bp->b_dirtyend || (on + n) < bp->b_dirtyoff)) { - if (VOP_BWRITE(bp) == EINTR) + if (VOP_BWRITE(bp->b_vp, bp) == EINTR) return (EINTR); goto again; } @@ -961,7 +961,7 @@ again: if ((np->n_flag & NQNFSNONCACHE) || (ioflag & IO_SYNC)) { if (ioflag & IO_INVAL) bp->b_flags |= B_NOCACHE; - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); if (error) return (error); if (np->n_flag & NQNFSNONCACHE) { diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c index 1450102..c4b20b8 100644 --- a/sys/nfs/nfs_vnops.c +++ b/sys/nfs/nfs_vnops.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95 - * $Id: nfs_vnops.c,v 1.129 1999/05/11 19:54:47 phk Exp $ + * $Id: nfs_vnops.c,v 1.130 1999/06/05 05:35:02 peter Exp $ */ @@ -2933,7 +2933,7 @@ loop: else bp->b_flags |= (B_BUSY|B_ASYNC|B_WRITEINPROG|B_NEEDCOMMIT); splx(s); - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); goto loop; } splx(s); diff --git a/sys/nfsclient/nfs_bio.c b/sys/nfsclient/nfs_bio.c index c7029d6..fe055c0 100644 --- a/sys/nfsclient/nfs_bio.c +++ b/sys/nfsclient/nfs_bio.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_bio.c 8.9 (Berkeley) 3/30/95 - * $Id: nfs_bio.c,v 1.71 1999/05/06 20:00:30 phk Exp $ + * $Id: nfs_bio.c,v 1.72 1999/06/05 05:25:37 peter Exp $ */ @@ -894,7 +894,7 @@ again: if (bp->b_dirtyend > 0 && (on > bp->b_dirtyend || (on + n) < bp->b_dirtyoff)) { - if (VOP_BWRITE(bp) == EINTR) + if (VOP_BWRITE(bp->b_vp, bp) == EINTR) return (EINTR); goto again; } @@ -961,7 +961,7 @@ again: if ((np->n_flag & NQNFSNONCACHE) || (ioflag & IO_SYNC)) { if (ioflag & IO_INVAL) bp->b_flags |= B_NOCACHE; - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); if (error) return (error); if (np->n_flag & NQNFSNONCACHE) { diff --git a/sys/nfsclient/nfs_vnops.c b/sys/nfsclient/nfs_vnops.c index 1450102..c4b20b8 100644 --- a/sys/nfsclient/nfs_vnops.c +++ b/sys/nfsclient/nfs_vnops.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95 - * $Id: nfs_vnops.c,v 1.129 1999/05/11 19:54:47 phk Exp $ + * $Id: nfs_vnops.c,v 1.130 1999/06/05 05:35:02 peter Exp $ */ @@ -2933,7 +2933,7 @@ loop: else bp->b_flags |= (B_BUSY|B_ASYNC|B_WRITEINPROG|B_NEEDCOMMIT); splx(s); - VOP_BWRITE(bp); + VOP_BWRITE(bp->b_vp, bp); goto loop; } splx(s); diff --git a/sys/tools/vnode_if.awk b/sys/tools/vnode_if.awk index 87517e6..07e0e91 100644 --- a/sys/tools/vnode_if.awk +++ b/sys/tools/vnode_if.awk @@ -32,7 +32,7 @@ # SUCH DAMAGE. # # @(#)vnode_if.sh 8.1 (Berkeley) 6/10/93 -# $Id: vnode_if.sh,v 1.16 1998/11/10 09:04:09 peter Exp $ +# $Id: vnode_if.sh,v 1.17 1999/02/28 11:30:00 bde Exp $ # # Script to produce VFS front-end sugar. @@ -350,48 +350,3 @@ $AWK 'function kill_surrounding_ws (s) { printf "\n"; }' < $SRC >> $CFILE - -# THINGS THAT DON'T WORK RIGHT YET. -# -# vop_bwrite doesn't take any vnodes as arguments. This means that it -# can't function successfully through a bypass routine. -# -# To get around this problem for now we handle it as a special case. - -cat << END_OF_SPECIAL_CASES >> $HEADER -#include <sys/buf.h> - -struct vop_bwrite_args { - struct vnodeop_desc *a_desc; - struct buf *a_bp; -}; -extern struct vnodeop_desc vop_bwrite_desc; -static __inline int VOP_BWRITE __P(( - struct buf *bp)); -static __inline int VOP_BWRITE(bp) - struct buf *bp; -{ - struct vop_bwrite_args a; - - a.a_desc = VDESC(vop_bwrite); - a.a_bp = bp; - return (VCALL((bp)->b_vp, VOFFSET(vop_bwrite), &a)); -} -END_OF_SPECIAL_CASES - -cat << END_OF_SPECIAL_CASES >> $CFILE -static int vop_bwrite_vp_offsets[] = { - VDESC_NO_OFFSET -}; -struct vnodeop_desc vop_bwrite_desc = { - 0, - "vop_bwrite", - 0, - vop_bwrite_vp_offsets, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - NULL, -}; -END_OF_SPECIAL_CASES diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index 8521e3b..df2791f 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -53,7 +53,7 @@ * SUCH DAMAGE. * * from: @(#)ffs_softdep.c 9.40 (McKusick) 6/15/99 - * $Id: ffs_softdep.c,v 1.29 1999/05/22 04:43:04 julian Exp $ + * $Id: ffs_softdep.c,v 1.30 1999/06/15 23:37:29 mckusick Exp $ */ /* @@ -3533,7 +3533,8 @@ softdep_update_inodeblock(ip, bp, waitfor) } gotit = getdirtybuf(&inodedep->id_buf, MNT_WAIT); FREE_LOCK(&lk); - if (gotit && (error = VOP_BWRITE(inodedep->id_buf)) != 0) + if (gotit && + (error = VOP_BWRITE(inodedep->id_buf->b_vp, inodedep->id_buf)) != 0) softdep_error("softdep_update_inodeblock: bwrite", error); if ((inodedep->id_state & DEPCOMPLETE) == 0) panic("softdep_update_inodeblock: update failed"); @@ -3666,7 +3667,7 @@ softdep_fsync(vp) */ error = bread(pvp, lbn, blksize(fs, VTOI(pvp), lbn), p->p_ucred, &bp); - ret = VOP_BWRITE(bp); + ret = VOP_BWRITE(bp->b_vp, bp); vput(pvp); if (error != 0) return (error); @@ -3808,7 +3809,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3825,7 +3826,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3842,7 +3843,7 @@ loop: if (getdirtybuf(&nbp, MNT_WAIT) == 0) goto restart; FREE_LOCK(&lk); - if ((error = VOP_BWRITE(nbp)) != 0) { + if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3896,7 +3897,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -3917,7 +3918,7 @@ loop: FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp)) != 0) { + } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { bawrite(bp); return (error); } @@ -4027,7 +4028,7 @@ flush_inodedep_deps(fs, ino) FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(bp); - } else if ((error = VOP_BWRITE(bp)) != 0) { + } else if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) { ACQUIRE_LOCK(&lk); return (error); } @@ -4049,7 +4050,7 @@ flush_inodedep_deps(fs, ino) FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(bp); - } else if ((error = VOP_BWRITE(bp)) != 0) { + } else if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) { ACQUIRE_LOCK(&lk); return (error); } @@ -4136,7 +4137,8 @@ flush_pagedep_deps(pvp, mp, diraddhdp) gotit = getdirtybuf(&inodedep->id_buf,MNT_WAIT); FREE_LOCK(&lk); if (gotit && - (error = VOP_BWRITE(inodedep->id_buf)) != 0) + (error = VOP_BWRITE(inodedep->id_buf->b_vp, + inodedep->id_buf)) != 0) break; ACQUIRE_LOCK(&lk); } @@ -4151,7 +4153,7 @@ flush_pagedep_deps(pvp, mp, diraddhdp) fsbtodb(ump->um_fs, ino_to_fsba(ump->um_fs, inum)), (int)ump->um_fs->fs_bsize, NOCRED, &bp)) != 0) break; - if ((error = VOP_BWRITE(bp)) != 0) + if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) break; ACQUIRE_LOCK(&lk); if (dap == LIST_FIRST(diraddhdp)) diff --git a/sys/ufs/ufs/ufs_lookup.c b/sys/ufs/ufs/ufs_lookup.c index 44d33a8..dbbfefb 100644 --- a/sys/ufs/ufs/ufs_lookup.c +++ b/sys/ufs/ufs/ufs_lookup.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)ufs_lookup.c 8.15 (Berkeley) 6/16/95 - * $Id: ufs_lookup.c,v 1.26 1999/01/07 16:14:18 bde Exp $ + * $Id: ufs_lookup.c,v 1.27 1999/01/28 00:57:56 dillon Exp $ */ #include <sys/param.h> @@ -719,7 +719,7 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp) dirp->d_ino, newdirbp); bdwrite(bp); } else { - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); } ret = UFS_UPDATE(dvp, !DOINGSOFTDEP(dvp)); if (error == 0) @@ -896,7 +896,7 @@ out: if (ip) ip->i_nlink--; if (flags & DOWHITEOUT) - error = VOP_BWRITE(bp); + error = VOP_BWRITE(bp->b_vp, bp); else if (dvp->v_mount->mnt_flag & MNT_ASYNC && dp->i_count != 0) { bdwrite(bp); diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c index 52b3ab6..3526115 100644 --- a/sys/ufs/ufs/ufs_vnops.c +++ b/sys/ufs/ufs/ufs_vnops.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 - * $Id: ufs_vnops.c,v 1.113 1999/04/28 11:38:20 phk Exp $ + * $Id: ufs_vnops.c,v 1.114 1999/05/11 19:55:05 phk Exp $ */ #include "opt_quota.h" @@ -1421,7 +1421,7 @@ ufs_mkdir(ap) } } if ((error = UFS_UPDATE(tvp, !DOINGSOFTDEP(tvp))) != 0) { - (void)VOP_BWRITE(bp); + (void)VOP_BWRITE(bp->b_vp, bp); goto bad; } VN_POLLEVENT(dvp, POLLWRITE); /* XXX right place? */ @@ -1436,7 +1436,7 @@ ufs_mkdir(ap) * an appropriate ordering dependency to the buffer which ensures that * the buffer is written before the new name is written in the parent. */ - if (!DOINGSOFTDEP(dvp) && ((error = VOP_BWRITE(bp)) != 0)) + if (!DOINGSOFTDEP(dvp) && ((error = VOP_BWRITE(bp->b_vp, bp)) != 0)) goto bad; ufs_makedirentry(ip, cnp, &newdir); error = ufs_direnter(dvp, tvp, &newdir, cnp, bp); |