From 62cfda2772299e3a74e7ced1f91b0f8fe45f3e9a Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Fri, 5 May 2006 16:35:11 +0000 Subject: [PATCH] Remove VOP_BWRITE(). This function provided a way for a VFS to override the bwrite() function and was used *only* by NFS in order to allow NFS to handle the B_NEEDCOMMIT flag as part of NFSv3's 2-phase commit operation. However, over time, the handling of this flag was moved to the strategy code. Additionally, the kernel now fully supports the redirtying of buffers during an I/O (which both softupdates and NFS need to be able to do). The override is no longer needed. All former calls to VOP_BWRITE() now simply call bwrite(). --- sys/kern/vfs_bio.c | 16 ++++---- sys/kern/vfs_default.c | 10 +---- sys/kern/vfs_subr.c | 12 +++--- sys/kern/vfs_vopops.c | 29 +-------------- sys/sys/vfsops.h | 18 ++------- sys/sys/vnode.h | 4 +- sys/vfs/coda/coda_vnops.c | 3 +- sys/vfs/gnu/ext2fs/ext2_lookup.c | 10 ++--- sys/vfs/hpfs/hpfs_vnops.c | 3 +- sys/vfs/mfs/mfs_vnops.c | 3 +- sys/vfs/nfs/nfs.h | 3 +- sys/vfs/nfs/nfs_bio.c | 8 ++-- sys/vfs/nfs/nfs_serv.c | 4 +- sys/vfs/nfs/nfs_vnops.c | 63 +------------------------------- sys/vfs/ntfs/ntfs_vnops.c | 3 +- sys/vfs/ufs/ffs_softdep.c | 26 ++++++------- sys/vfs/ufs/ufs_lookup.c | 8 ++-- sys/vfs/ufs/ufs_vnops.c | 6 +-- 18 files changed, 57 insertions(+), 172 deletions(-) diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 7025cd2808..4e30d85993 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -12,7 +12,7 @@ * John S. Dyson. * * $FreeBSD: src/sys/kern/vfs_bio.c,v 1.242.2.20 2003/05/28 18:38:10 alc Exp $ - * $DragonFly: src/sys/kern/vfs_bio.c,v 1.73 2006/05/05 16:15:56 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_bio.c,v 1.74 2006/05/05 16:35:00 dillon Exp $ */ /* @@ -881,7 +881,7 @@ void bawrite(struct buf *bp) { bp->b_flags |= B_ASYNC; - (void) VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); } /* @@ -896,7 +896,7 @@ int bowrite(struct buf *bp) { bp->b_flags |= B_ORDERED | B_ASYNC; - return (VOP_BWRITE(bp->b_vp, bp)); + return (bwrite(bp)); } /* @@ -1492,7 +1492,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->b_vp, bp); + bwrite(bp); return nwritten; } @@ -2117,7 +2117,7 @@ findblk(struct vnode *vp, off_t loffset) * case it is returned with B_INVAL clear and B_CACHE set based on the * backing VM. * - * getblk() also forces a VOP_BWRITE() for any B_DELWRI buffer whos + * getblk() also forces a bwrite() for any B_DELWRI buffer whos * B_CACHE bit is clear. * * What this means, basically, is that the caller should use B_CACHE to @@ -2223,10 +2223,10 @@ loop: if (size != bp->b_bcount) { if (bp->b_flags & B_DELWRI) { bp->b_flags |= B_NOCACHE; - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); } else if (LIST_FIRST(&bp->b_dep)) { bp->b_flags |= B_NOCACHE; - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); } else { bp->b_flags |= B_RELBUF; brelse(bp); @@ -2267,7 +2267,7 @@ loop: if ((bp->b_flags & (B_CACHE|B_DELWRI)) == B_DELWRI) { bp->b_flags |= B_NOCACHE; - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); goto loop; } crit_exit(); diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index e1f31a37b8..b289328494 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -37,7 +37,7 @@ * * * $FreeBSD: src/sys/kern/vfs_default.c,v 1.28.2.7 2003/01/10 18:23:26 bde Exp $ - * $DragonFly: src/sys/kern/vfs_default.c,v 1.35 2006/04/30 17:22:17 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_default.c,v 1.36 2006/05/05 16:35:00 dillon Exp $ */ #include @@ -78,7 +78,6 @@ struct vop_ops *default_vnode_vops; static struct vnodeopv_entry_desc default_vnodeop_entries[] = { { &vop_default_desc, vop_eopnotsupp }, { &vop_advlock_desc, vop_einval }, - { &vop_bwrite_desc, (void *) vop_stdbwrite }, { &vop_fsync_desc, vop_null }, { &vop_ioctl_desc, vop_enotty }, { &vop_islocked_desc, (void *) vop_stdislocked }, @@ -1333,13 +1332,6 @@ vop_stdpoll(ap) return (ap->a_events & (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM)); } -int -vop_stdbwrite(ap) - struct vop_bwrite_args *ap; -{ - return (bwrite(ap->a_bp)); -} - /* * vfs default ops * used to fill the vfs fucntion table to get reasonable default return values. diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 86f7da93e5..4916964c21 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -37,7 +37,7 @@ * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 * $FreeBSD: src/sys/kern/vfs_subr.c,v 1.249.2.30 2003/04/04 20:35:57 tegge Exp $ - * $DragonFly: src/sys/kern/vfs_subr.c,v 1.80 2006/04/30 18:25:35 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_subr.c,v 1.81 2006/05/05 16:35:00 dillon Exp $ */ /* @@ -393,8 +393,8 @@ vinvalbuf_bp(struct buf *bp, void *data) * believe there is a slight chance that a delayed * write will occur while sleeping just above, so * check for it. Note that vfs_bio_awrite expects - * buffers to reside on a queue, while VOP_BWRITE and - * brelse do not. + * buffers to reside on a queue, while bwrite() and + * brelse() do not. */ if (((bp->b_flags & (B_DELWRI | B_INVAL)) == B_DELWRI) && (info->flags & V_SAVE)) { @@ -404,11 +404,11 @@ vinvalbuf_bp(struct buf *bp, void *data) } else { bremfree(bp); bp->b_flags |= B_ASYNC; - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); } } else { bremfree(bp); - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); } } else { bremfree(bp); @@ -554,7 +554,7 @@ vtruncbuf_bp_metasync(struct buf *bp, void *data) } else { bp->b_flags &= ~B_ASYNC; } - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); } return(1); } else { diff --git a/sys/kern/vfs_vopops.c b/sys/kern/vfs_vopops.c index cc76d59c94..e68714bc39 100644 --- a/sys/kern/vfs_vopops.c +++ b/sys/kern/vfs_vopops.c @@ -32,7 +32,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.22 2006/04/30 17:22:17 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.23 2006/05/05 16:35:00 dillon Exp $ */ #include @@ -269,7 +269,6 @@ VNODEOP_DESC_INIT_VP(reallocblks); VNODEOP_DESC_INIT_VP(getpages); VNODEOP_DESC_INIT_VP(putpages); VNODEOP_DESC_INIT_VP(freeblks); -VNODEOP_DESC_INIT_VP(bwrite); VNODEOP_DESC_INIT_VP_CRED(getacl); VNODEOP_DESC_INIT_VP_CRED(setacl); VNODEOP_DESC_INIT_VP_CRED(aclcheck); @@ -1020,23 +1019,6 @@ vop_freeblks(struct vop_ops *ops, struct vnode *vp, off_t offset, int length) return(error); } -int -vop_bwrite(struct vop_ops *ops, struct vnode *vp, struct buf *bp) -{ - struct vop_bwrite_args ap; - int error; - - ap.a_head.a_desc = &vop_bwrite_desc; - ap.a_head.a_ops = ops; - ap.a_vp = vp; - ap.a_bp = bp; - - DO_OPS(ops, error, &ap, vop_bwrite); - if (error == 0) - cache_update_fsmid_vp(vp); - return(error); -} - int vop_getacl(struct vop_ops *ops, struct vnode *vp, acl_type_t type, struct acl *aclp, struct ucred *cred, struct thread *td) @@ -1778,15 +1760,6 @@ vop_freeblks_ap(struct vop_freeblks_args *ap) return(error); } -int -vop_bwrite_ap(struct vop_bwrite_args *ap) -{ - int error; - - DO_OPS(ap->a_head.a_ops, error, ap, vop_bwrite); - return(error); -} - int vop_getacl_ap(struct vop_getacl_args *ap) { diff --git a/sys/sys/vfsops.h b/sys/sys/vfsops.h index 68024bf65b..1dbd7caff3 100644 --- a/sys/sys/vfsops.h +++ b/sys/sys/vfsops.h @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/sys/vfsops.h,v 1.19 2006/04/25 22:11:29 dillon Exp $ + * $DragonFly: src/sys/sys/vfsops.h,v 1.20 2006/05/05 16:35:03 dillon Exp $ */ /* @@ -394,12 +394,6 @@ struct vop_freeblks_args { int a_length; }; -struct vop_bwrite_args { - struct vop_generic_args a_head; - struct vnode *a_vp; - struct buf *a_bp; -}; - struct vop_getacl_args { struct vop_generic_args a_head; struct vnode *a_vp; @@ -603,15 +597,15 @@ struct vop_ops { int (*vop_getpages)(struct vop_getpages_args *); int (*vop_putpages)(struct vop_putpages_args *); int (*vop_freeblks)(struct vop_freeblks_args *); - int (*vop_bwrite)(struct vop_bwrite_args *); + int (*vop_unused05)(void *); int (*vop_getacl)(struct vop_getacl_args *); int (*vop_setacl)(struct vop_setacl_args *); int (*vop_aclcheck)(struct vop_aclcheck_args *); int (*vop_getextattr)(struct vop_getextattr_args *); int (*vop_setextattr)(struct vop_setextattr_args *); - int (*vop_unused05)(void *); int (*vop_unused06)(void *); int (*vop_unused07)(void *); + int (*vop_unused08)(void *); int (*vop_mountctl)(struct vop_mountctl_args *); int (*vop_nresolve)(struct vop_nresolve_args *); @@ -691,7 +685,6 @@ union vop_args_union { struct vop_getpages_args vu_getpages; struct vop_putpages_args vu_putpages; struct vop_freeblks_args vu_freeblks; - struct vop_bwrite_args vu_bwrite; struct vop_getacl_args vu_getacl; struct vop_setacl_args vu_setacl; struct vop_aclcheck_args vu_aclcheck; @@ -804,7 +797,6 @@ int vop_putpages(struct vop_ops *ops, struct vnode *vp, struct vm_page **m, int count, int sync, int *rtvals, vm_ooffset_t offset); int vop_freeblks(struct vop_ops *ops, struct vnode *vp, off_t offset, int length); -int vop_bwrite(struct vop_ops *ops, struct vnode *vp, struct buf *bp); int vop_getacl(struct vop_ops *ops, struct vnode *vp, acl_type_t type, struct acl *aclp, struct ucred *cred, struct thread *td); int vop_setacl(struct vop_ops *ops, struct vnode *vp, acl_type_t type, @@ -893,7 +885,6 @@ int vop_reallocblks_ap(struct vop_reallocblks_args *ap); int vop_getpages_ap(struct vop_getpages_args *ap); int vop_putpages_ap(struct vop_putpages_args *ap); int vop_freeblks_ap(struct vop_freeblks_args *ap); -int vop_bwrite_ap(struct vop_bwrite_args *ap); int vop_getacl_ap(struct vop_getacl_args *ap); int vop_setacl_ap(struct vop_setacl_args *ap); int vop_aclcheck_ap(struct vop_aclcheck_args *ap); @@ -959,7 +950,6 @@ extern struct vnodeop_desc vop_reallocblks_desc; extern struct vnodeop_desc vop_getpages_desc; extern struct vnodeop_desc vop_putpages_desc; extern struct vnodeop_desc vop_freeblks_desc; -extern struct vnodeop_desc vop_bwrite_desc; extern struct vnodeop_desc vop_getacl_desc; extern struct vnodeop_desc vop_setacl_desc; extern struct vnodeop_desc vop_aclcheck_desc; @@ -1043,8 +1033,6 @@ extern struct vnodeop_desc vop_nrename_desc; vop_putpages(*(vp)->v_ops, vp, m, count, sync, rtvals, off) #define VOP_FREEBLKS(vp, offset, length) \ vop_freeblks(*(vp)->v_ops, vp, offset, length) -#define VOP_BWRITE(vp, bp) \ - vop_bwrite(*(vp)->v_ops, vp, bp) #define VOP_GETACL(vp, type, aclp, cred, td) \ vop_getacl(*(vp)->v_ops, vp, type, aclp, cred, td) #define VOP_SETACL(vp, type, aclp, cred, td) \ diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 1a2b4e3a14..d419b61bb6 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -32,7 +32,7 @@ * * @(#)vnode.h 8.7 (Berkeley) 2/4/94 * $FreeBSD: src/sys/sys/vnode.h,v 1.111.2.19 2002/12/29 18:19:53 dillon Exp $ - * $DragonFly: src/sys/sys/vnode.h,v 1.49 2006/04/25 22:11:29 dillon Exp $ + * $DragonFly: src/sys/sys/vnode.h,v 1.50 2006/05/05 16:35:03 dillon Exp $ */ #ifndef _SYS_VNODE_H_ @@ -560,7 +560,6 @@ struct ucred; struct uio; struct vattr; struct vnode; -struct vop_bwrite_args; void addaliasu (struct vnode *vp, udev_t nvp_udev); int v_associate_rdev(struct vnode *vp, dev_t dev); @@ -631,7 +630,6 @@ void vfs_timestamp (struct timespec *); int vn_writechk (struct vnode *vp); int vop_stdopen (struct vop_open_args *ap); int vop_stdclose (struct vop_close_args *ap); -int vop_stdbwrite (struct vop_bwrite_args *ap); int vop_stdislocked (struct vop_islocked_args *ap); int vop_stdlock (struct vop_lock_args *ap); int vop_stdrlock (struct vop_lock_args *ap); diff --git a/sys/vfs/coda/coda_vnops.c b/sys/vfs/coda/coda_vnops.c index bebbb7b41a..a7aa2ec52f 100644 --- a/sys/vfs/coda/coda_vnops.c +++ b/sys/vfs/coda/coda_vnops.c @@ -28,7 +28,7 @@ * * @(#) src/sys/coda/coda_vnops.c,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $ * $FreeBSD: src/sys/coda/coda_vnops.c,v 1.22.2.1 2001/06/29 16:26:22 shafeeq Exp $ - * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.c,v 1.34 2006/04/23 03:08:04 dillon Exp $ + * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.c,v 1.35 2006/05/05 16:35:04 dillon Exp $ * */ @@ -143,7 +143,6 @@ struct vnodeopv_entry_desc coda_vnodeop_entries[] = { { &vop_islocked_desc, (vnodeopv_entry_t)coda_islocked }, /* islocked */ { &vop_pathconf_desc, (vnodeopv_entry_t)coda_vop_error }, /* pathconf */ { &vop_advlock_desc, (vnodeopv_entry_t)coda_vop_nop }, /* advlock */ - { &vop_bwrite_desc, (vnodeopv_entry_t)coda_vop_error }, /* bwrite */ { &vop_poll_desc, (vnodeopv_entry_t)vop_stdpoll }, /* poll */ { &vop_getpages_desc, (vnodeopv_entry_t)coda_fbsd_getpages }, /* pager intf.*/ { &vop_putpages_desc, (vnodeopv_entry_t)coda_fbsd_putpages }, /* pager intf.*/ diff --git a/sys/vfs/gnu/ext2fs/ext2_lookup.c b/sys/vfs/gnu/ext2fs/ext2_lookup.c index 1e71d2b425..d5ab53f4fb 100644 --- a/sys/vfs/gnu/ext2fs/ext2_lookup.c +++ b/sys/vfs/gnu/ext2fs/ext2_lookup.c @@ -5,7 +5,7 @@ * University of Utah, Department of Computer Science * * $FreeBSD: src/sys/gnu/ext2fs/ext2_lookup.c,v 1.21.2.3 2002/11/17 02:02:42 bde Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_lookup.c,v 1.19 2006/04/04 17:34:32 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_lookup.c,v 1.20 2006/05/05 16:35:05 dillon Exp $ */ /* * Copyright (c) 1989, 1993 @@ -843,7 +843,7 @@ ext2_direnter(struct inode *ip, struct vnode *dvp, struct componentname *cnp) ep = (struct ext2_dir_entry_2 *)((char *)ep + dsize); } bcopy((caddr_t)&newdir, (caddr_t)ep, (u_int)newentrysize); - error = VOP_BWRITE(bp->b_vp, bp); + error = bwrite(bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; if (!error && dp->i_endoff && dp->i_endoff < dp->i_size) error = EXT2_TRUNCATE(dvp, (off_t)dp->i_endoff, IO_SYNC, @@ -880,7 +880,7 @@ ext2_dirremove(struct vnode *dvp, struct componentname *cnp) EXT2_BLKATOFF(dvp, (off_t)dp->i_offset, (char **)&ep, &bp)) != 0) return (error); ep->inode = 0; - error = VOP_BWRITE(bp->b_vp, bp); + error = bwrite(bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } @@ -891,7 +891,7 @@ ext2_dirremove(struct vnode *dvp, struct componentname *cnp) (char **)&ep, &bp)) != 0) return (error); ep->rec_len += dp->i_reclen; - error = VOP_BWRITE(bp->b_vp, bp); + error = bwrite(bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } @@ -917,7 +917,7 @@ ext2_dirrewrite(struct inode *dp, struct inode *ip, struct componentname *cnp) ep->file_type = DTTOFT(IFTODT(ip->i_mode)); else ep->file_type = EXT2_FT_UNKNOWN; - error = VOP_BWRITE(bp->b_vp, bp); + error = bwrite(bp); dp->i_flag |= IN_CHANGE | IN_UPDATE; return (error); } diff --git a/sys/vfs/hpfs/hpfs_vnops.c b/sys/vfs/hpfs/hpfs_vnops.c index f8fc108627..b6d63c4899 100644 --- a/sys/vfs/hpfs/hpfs_vnops.c +++ b/sys/vfs/hpfs/hpfs_vnops.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/hpfs/hpfs_vnops.c,v 1.2.2.2 2002/01/15 18:35:09 semenu Exp $ - * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.32 2006/04/24 22:01:50 dillon Exp $ + * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.33 2006/05/05 16:35:06 dillon Exp $ */ #include @@ -1240,7 +1240,6 @@ struct vnodeopv_entry_desc hpfs_vnodeop_entries[] = { { &vop_getpages_desc, (vnodeopv_entry_t) hpfs_getpages }, { &vop_putpages_desc, (vnodeopv_entry_t) hpfs_putpages }, { &vop_strategy_desc, (vnodeopv_entry_t)hpfs_strategy }, - { &vop_bwrite_desc, (vnodeopv_entry_t)vop_stdbwrite }, { &vop_read_desc, (vnodeopv_entry_t)hpfs_read }, { &vop_write_desc, (vnodeopv_entry_t)hpfs_write }, { &vop_ioctl_desc, (vnodeopv_entry_t)hpfs_ioctl }, diff --git a/sys/vfs/mfs/mfs_vnops.c b/sys/vfs/mfs/mfs_vnops.c index a6a67b1d11..c53fffd5bb 100644 --- a/sys/vfs/mfs/mfs_vnops.c +++ b/sys/vfs/mfs/mfs_vnops.c @@ -32,7 +32,7 @@ * * @(#)mfs_vnops.c 8.11 (Berkeley) 5/22/95 * $FreeBSD: src/sys/ufs/mfs/mfs_vnops.c,v 1.47.2.1 2001/05/22 02:06:43 bp Exp $ - * $DragonFly: src/sys/vfs/mfs/mfs_vnops.c,v 1.25 2006/04/30 17:22:18 dillon Exp $ + * $DragonFly: src/sys/vfs/mfs/mfs_vnops.c,v 1.26 2006/05/05 16:35:07 dillon Exp $ */ #include @@ -77,7 +77,6 @@ struct vop_ops *mfs_vnode_vops; static struct vnodeopv_entry_desc mfs_vnodeop_entries[] = { { &vop_default_desc, (vnodeopv_entry_t) mfs_badop }, { &vop_bmap_desc, (vnodeopv_entry_t) mfs_bmap }, - { &vop_bwrite_desc, vop_defaultop }, { &vop_close_desc, (vnodeopv_entry_t) mfs_close }, { &vop_freeblks_desc, (vnodeopv_entry_t) mfs_freeblks }, { &vop_fsync_desc, (vnodeopv_entry_t) mfs_fsync }, diff --git a/sys/vfs/nfs/nfs.h b/sys/vfs/nfs/nfs.h index c852ccc798..0b8fe122f0 100644 --- a/sys/vfs/nfs/nfs.h +++ b/sys/vfs/nfs/nfs.h @@ -35,7 +35,7 @@ * * @(#)nfs.h 8.4 (Berkeley) 5/1/95 * $FreeBSD: src/sys/nfs/nfs.h,v 1.53.2.5 2002/02/20 01:35:34 iedowse Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs.h,v 1.16 2006/04/24 19:15:47 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs.h,v 1.17 2006/05/05 16:35:08 dillon Exp $ */ #ifndef _NFS_NFS_H_ @@ -660,7 +660,6 @@ void nfs_clearcommit (struct mount *); int nfsrv_errmap (struct nfsrv_descript *, int); void nfsrvw_sort (gid_t *, int); void nfsrv_setcred (struct ucred *, struct ucred *); -int nfs_writebp (struct buf *, int, struct thread *); int nfsrv_object_create (struct vnode *); void nfsrv_wakenfsd (struct nfssvc_sock *slp, int nparallel); int nfsrv_writegather (struct nfsrv_descript **, struct nfssvc_sock *, diff --git a/sys/vfs/nfs/nfs_bio.c b/sys/vfs/nfs/nfs_bio.c index 093b6cbe10..dd9d272714 100644 --- a/sys/vfs/nfs/nfs_bio.c +++ b/sys/vfs/nfs/nfs_bio.c @@ -35,7 +35,7 @@ * * @(#)nfs_bio.c 8.9 (Berkeley) 3/30/95 * $FreeBSD: /repoman/r/ncvs/src/sys/nfsclient/nfs_bio.c,v 1.130 2004/04/14 23:23:55 peadar Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_bio.c,v 1.34 2006/04/30 17:22:18 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_bio.c,v 1.35 2006/05/05 16:35:08 dillon Exp $ */ @@ -998,7 +998,7 @@ again: if (bp->b_dirtyend > 0 && (on > bp->b_dirtyend || (on + n) < bp->b_dirtyoff)) { - if (VOP_BWRITE(vp, bp) == EINTR) { + if (bwrite(bp) == EINTR) { error = EINTR; break; } @@ -1051,7 +1051,7 @@ again: if ((np->n_flag & NDONTCACHE) || (ioflag & IO_SYNC)) { if (ioflag & IO_INVAL) bp->b_flags |= B_NOCACHE; - error = VOP_BWRITE(vp, bp); + error = bwrite(bp); if (error) break; if (np->n_flag & NDONTCACHE) { @@ -1061,7 +1061,7 @@ again: } } else if ((n + on) == biosize) { bp->b_flags |= B_ASYNC; - nfs_writebp(bp, 0, 0); + bwrite(bp); } else { bdwrite(bp); } diff --git a/sys/vfs/nfs/nfs_serv.c b/sys/vfs/nfs/nfs_serv.c index 02766620ee..9b356f2915 100644 --- a/sys/vfs/nfs/nfs_serv.c +++ b/sys/vfs/nfs/nfs_serv.c @@ -35,7 +35,7 @@ * * @(#)nfs_serv.c 8.8 (Berkeley) 7/31/95 * $FreeBSD: src/sys/nfs/nfs_serv.c,v 1.93.2.6 2002/12/29 18:19:53 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_serv.c,v 1.32 2006/04/07 06:38:33 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_serv.c,v 1.33 2006/05/05 16:35:08 dillon Exp $ */ /* @@ -3486,7 +3486,7 @@ nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, } bremfree(bp); bp->b_flags &= ~B_ASYNC; - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); ++nfs_commit_miss; } ++nfs_commit_blks; diff --git a/sys/vfs/nfs/nfs_vnops.c b/sys/vfs/nfs/nfs_vnops.c index d465abdb0c..c0b42624bb 100644 --- a/sys/vfs/nfs/nfs_vnops.c +++ b/sys/vfs/nfs/nfs_vnops.c @@ -35,7 +35,7 @@ * * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95 * $FreeBSD: src/sys/nfs/nfs_vnops.c,v 1.150.2.5 2001/12/20 19:56:28 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_vnops.c,v 1.58 2006/04/30 17:22:18 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_vnops.c,v 1.59 2006/05/05 16:35:08 dillon Exp $ */ @@ -129,7 +129,6 @@ static int nfsspec_access (struct vop_access_args *); static int nfs_readlink (struct vop_readlink_args *); static int nfs_print (struct vop_print_args *); static int nfs_advlock (struct vop_advlock_args *); -static int nfs_bwrite (struct vop_bwrite_args *); static int nfs_nresolve (struct vop_nresolve_args *); /* @@ -140,7 +139,6 @@ struct vnodeopv_entry_desc nfsv2_vnodeop_entries[] = { { &vop_access_desc, (vnodeopv_entry_t) nfs_access }, { &vop_advlock_desc, (vnodeopv_entry_t) nfs_advlock }, { &vop_bmap_desc, (vnodeopv_entry_t) nfs_bmap }, - { &vop_bwrite_desc, (vnodeopv_entry_t) nfs_bwrite }, { &vop_close_desc, (vnodeopv_entry_t) nfs_close }, { &vop_old_create_desc, (vnodeopv_entry_t) nfs_create }, { &vop_fsync_desc, (vnodeopv_entry_t) nfs_fsync }, @@ -3063,7 +3061,7 @@ nfs_flush_bp(struct buf *bp, void *data) bp->b_flags |= B_ASYNC; crit_exit(); - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); } else { crit_exit(); error = 0; @@ -3227,63 +3225,6 @@ nfs_print(struct vop_print_args *ap) return (0); } -/* - * Just call nfs_writebp() with the force argument set to 1. - * - * nfs_bwrite(struct vnode *a_bp) - */ -static int -nfs_bwrite(struct vop_bwrite_args *ap) -{ - return (nfs_writebp(ap->a_bp, 1, curthread)); -} - -/* - * This is a clone of vn_bwrite(), except that it also handles the - * B_NEEDCOMMIT flag. We set B_CACHE if this is a VMIO buffer. - */ -int -nfs_writebp(struct buf *bp, int force, struct thread *td) -{ - int error; - - if (BUF_REFCNT(bp) == 0) - panic("bwrite: buffer is not locked???"); - - if (bp->b_flags & B_INVAL) { - brelse(bp); - return(0); - } - - bp->b_flags |= B_CACHE; - - /* - * Undirty the bp. We will redirty it later if the I/O fails. - */ - crit_enter(); - bundirty(bp); - bp->b_flags &= ~B_ERROR; - bp->b_cmd = BUF_CMD_WRITE; - crit_exit(); - - /* - * Note: to avoid loopback deadlocks, we do not - * assign b_runningbufspace. - */ - vfs_busy_pages(bp->b_vp, bp); - BUF_KERNPROC(bp); - - if (bp->b_flags & B_ASYNC) { - vn_strategy(bp->b_vp, &bp->b_bio1); - error = 0; - } else { - vn_strategy(bp->b_vp, &bp->b_bio1); - error = biowait(bp); - brelse(bp); - } - return (error); -} - /* * nfs special file access vnode op. * Essentially just get vattr and then imitate iaccess() since the device is diff --git a/sys/vfs/ntfs/ntfs_vnops.c b/sys/vfs/ntfs/ntfs_vnops.c index cd276674ed..b59ae860a4 100644 --- a/sys/vfs/ntfs/ntfs_vnops.c +++ b/sys/vfs/ntfs/ntfs_vnops.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs_vnops.c,v 1.9.2.4 2002/08/06 19:35:18 semenu Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.31 2006/04/30 17:22:18 dillon Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.32 2006/05/05 16:35:10 dillon Exp $ * */ @@ -862,7 +862,6 @@ struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { { &vop_getpages_desc, (vnodeopv_entry_t)ntfs_getpages }, { &vop_putpages_desc, (vnodeopv_entry_t)ntfs_putpages }, { &vop_strategy_desc, (vnodeopv_entry_t)ntfs_strategy }, - { &vop_bwrite_desc, (vnodeopv_entry_t)vop_stdbwrite }, { &vop_read_desc, (vnodeopv_entry_t)ntfs_read }, { &vop_write_desc, (vnodeopv_entry_t)ntfs_write }, diff --git a/sys/vfs/ufs/ffs_softdep.c b/sys/vfs/ufs/ffs_softdep.c index 252bdce157..0f42bc4115 100644 --- a/sys/vfs/ufs/ffs_softdep.c +++ b/sys/vfs/ufs/ffs_softdep.c @@ -37,7 +37,7 @@ * * from: @(#)ffs_softdep.c 9.59 (McKusick) 6/21/00 * $FreeBSD: src/sys/ufs/ffs/ffs_softdep.c,v 1.57.2.11 2002/02/05 18:46:53 dillon Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_softdep.c,v 1.39 2006/04/30 17:22:18 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_softdep.c,v 1.40 2006/05/05 16:35:11 dillon Exp $ */ /* @@ -3961,7 +3961,7 @@ softdep_update_inodeblock(ip, bp, waitfor) gotit = getdirtybuf(&inodedep->id_buf, MNT_WAIT); FREE_LOCK(&lk); if (gotit && - (error = VOP_BWRITE(inodedep->id_buf->b_vp, inodedep->id_buf)) != 0) + (error = bwrite(inodedep->id_buf)) != 0) softdep_error("softdep_update_inodeblock: bwrite", error); if ((inodedep->id_state & DEPCOMPLETE) == 0) panic("softdep_update_inodeblock: update failed"); @@ -4094,7 +4094,7 @@ softdep_fsync(vp) */ error = bread(pvp, lblktodoff(fs, lbn), blksize(fs, VTOI(pvp), lbn), &bp); if (error == 0) - error = VOP_BWRITE(bp->b_vp, bp); + error = bwrite(bp); vput(pvp); if (error != 0) return (error); @@ -4313,7 +4313,7 @@ softdep_sync_metadata_bp(struct buf *bp, void *data) FREE_LOCK(&lk); if (info->waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { + } else if ((error = bwrite(nbp)) != 0) { bawrite(bp); ACQUIRE_LOCK(&lk); return (-error); @@ -4331,7 +4331,7 @@ softdep_sync_metadata_bp(struct buf *bp, void *data) FREE_LOCK(&lk); if (info->waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { + } else if ((error = bwrite(nbp)) != 0) { bawrite(bp); ACQUIRE_LOCK(&lk); return (-error); @@ -4349,7 +4349,7 @@ softdep_sync_metadata_bp(struct buf *bp, void *data) if (getdirtybuf(&nbp, MNT_WAIT) == 0) goto restart; FREE_LOCK(&lk); - if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { + if ((error = bwrite(nbp)) != 0) { bawrite(bp); ACQUIRE_LOCK(&lk); return (-error); @@ -4407,7 +4407,7 @@ softdep_sync_metadata_bp(struct buf *bp, void *data) FREE_LOCK(&lk); if (info->waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { + } else if ((error = bwrite(nbp)) != 0) { bawrite(bp); ACQUIRE_LOCK(&lk); return (-error); @@ -4435,7 +4435,7 @@ softdep_sync_metadata_bp(struct buf *bp, void *data) FREE_LOCK(&lk); if (info->waitfor == MNT_NOWAIT) { bawrite(nbp); - } else if ((error = VOP_BWRITE(nbp->b_vp, nbp)) != 0) { + } else if ((error = bwrite(nbp)) != 0) { bawrite(bp); ACQUIRE_LOCK(&lk); return (-error); @@ -4500,7 +4500,7 @@ flush_inodedep_deps(fs, ino) FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(bp); - } else if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) { + } else if ((error = bwrite(bp)) != 0) { ACQUIRE_LOCK(&lk); return (error); } @@ -4521,7 +4521,7 @@ flush_inodedep_deps(fs, ino) FREE_LOCK(&lk); if (waitfor == MNT_NOWAIT) { bawrite(bp); - } else if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) { + } else if ((error = bwrite(bp)) != 0) { ACQUIRE_LOCK(&lk); return (error); } @@ -4641,9 +4641,7 @@ flush_pagedep_deps(pvp, mp, diraddhdp) if ((inodedep->id_state & DEPCOMPLETE) == 0) { gotit = getdirtybuf(&inodedep->id_buf, MNT_WAIT); FREE_LOCK(&lk); - if (gotit && - (error = VOP_BWRITE(inodedep->id_buf->b_vp, - inodedep->id_buf)) != 0) + if (gotit && (error = bwrite(inodedep->id_buf)) != 0) break; ACQUIRE_LOCK(&lk); if (dap != LIST_FIRST(diraddhdp)) @@ -4658,7 +4656,7 @@ flush_pagedep_deps(pvp, mp, diraddhdp) fsbtodoff(ump->um_fs, ino_to_fsba(ump->um_fs, inum)), (int)ump->um_fs->fs_bsize, &bp)) != 0) break; - if ((error = VOP_BWRITE(bp->b_vp, bp)) != 0) + if ((error = bwrite(bp)) != 0) break; ACQUIRE_LOCK(&lk); /* diff --git a/sys/vfs/ufs/ufs_lookup.c b/sys/vfs/ufs/ufs_lookup.c index 41336dc2c2..fd48946886 100644 --- a/sys/vfs/ufs/ufs_lookup.c +++ b/sys/vfs/ufs/ufs_lookup.c @@ -37,7 +37,7 @@ * * @(#)ufs_lookup.c 8.15 (Berkeley) 6/16/95 * $FreeBSD: src/sys/ufs/ufs/ufs_lookup.c,v 1.33.2.7 2001/09/22 19:22:13 iedowse Exp $ - * $DragonFly: src/sys/vfs/ufs/ufs_lookup.c,v 1.22 2006/04/24 21:45:47 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ufs_lookup.c,v 1.23 2006/05/05 16:35:11 dillon Exp $ */ #include "opt_ufs.h" @@ -762,7 +762,7 @@ ufs_direnter(struct vnode *dvp, struct vnode *tvp, struct direct *dirp, bdwrite(bp); return (UFS_UPDATE(dvp, 0)); } - error = VOP_BWRITE(bp->b_vp, bp); + error = bwrite(bp); ret = UFS_UPDATE(dvp, 1); if (error == 0) return (ret); @@ -982,7 +982,7 @@ out: softdep_setup_remove(bp, dp, ip, isrmdir); } if (softdep_slowdown(dvp)) { - error = VOP_BWRITE(bp->b_vp, bp); + error = bwrite(bp); } else { bdwrite(bp); error = 0; @@ -994,7 +994,7 @@ out: ip->i_flag |= IN_CHANGE; } if (flags & CNP_DOWHITEOUT) - error = VOP_BWRITE(bp->b_vp, bp); + error = bwrite(bp); else if (DOINGASYNC(dvp) && dp->i_count != 0) { bdwrite(bp); error = 0; diff --git a/sys/vfs/ufs/ufs_vnops.c b/sys/vfs/ufs/ufs_vnops.c index dcefee6f75..5f10a4a9da 100644 --- a/sys/vfs/ufs/ufs_vnops.c +++ b/sys/vfs/ufs/ufs_vnops.c @@ -37,7 +37,7 @@ * * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 * $FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.131.2.8 2003/01/02 17:26:19 bde Exp $ - * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.45 2006/05/03 19:57:54 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.46 2006/05/05 16:35:11 dillon Exp $ */ #include "opt_quota.h" @@ -1452,7 +1452,7 @@ ufs_mkdir(struct vop_old_mkdir_args *ap) } if ((error = UFS_UPDATE(tvp, !(DOINGSOFTDEP(tvp) | DOINGASYNC(tvp)))) != 0) { - VOP_BWRITE(bp->b_vp, bp); + bwrite(bp); goto bad; } /* @@ -1468,7 +1468,7 @@ ufs_mkdir(struct vop_old_mkdir_args *ap) */ if (DOINGASYNC(dvp)) bdwrite(bp); - else if (!DOINGSOFTDEP(dvp) && ((error = VOP_BWRITE(bp->b_vp, bp)))) + else if (!DOINGSOFTDEP(dvp) && (error = bwrite(bp)) != 0) goto bad; ufs_makedirentry(ip, cnp, &newdir); error = ufs_direnter(dvp, tvp, &newdir, cnp, bp); -- 2.41.0