From 4e0ecc94da39f78ac4623c9b7758686c53dbe55a Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 24 Apr 2006 22:01:52 +0000 Subject: [PATCH] vfsync() is not in the business of removing buffers beyond the file EOF. Remove the procedural argument and related code. --- sys/kern/vfs_subr.c | 19 ++----------------- sys/sys/vnode.h | 4 ++-- sys/vfs/hpfs/hpfs_vnops.c | 4 ++-- sys/vfs/msdosfs/msdosfs_vnops.c | 4 ++-- sys/vfs/specfs/spec_vnops.c | 4 ++-- sys/vfs/ufs/ffs_vnops.c | 5 +++-- 6 files changed, 13 insertions(+), 27 deletions(-) diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index cc62cd51b4..a2b316159a 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.76 2006/04/23 00:47:10 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_subr.c,v 1.77 2006/04/24 22:01:18 dillon Exp $ */ /* @@ -582,12 +582,11 @@ struct vfsync_info { int lazycount; int lazylimit; int skippedbufs; - off_t loffset; int (*checkdef)(struct buf *); }; int -vfsync(struct vnode *vp, int waitfor, int passes, off_t loffset, +vfsync(struct vnode *vp, int waitfor, int passes, int (*checkdef)(struct buf *), int (*waitoutput)(struct vnode *, struct thread *)) { @@ -596,7 +595,6 @@ vfsync(struct vnode *vp, int waitfor, int passes, off_t loffset, bzero(&info, sizeof(info)); info.vp = vp; - info.loffset = loffset; if ((info.checkdef = checkdef) == NULL) info.syncdeps = 1; @@ -746,19 +744,6 @@ vfsync_bp(struct buf *bp, void *data) return(0); } - /* - * (LEGACY FROM UFS, REMOVE WHEN POSSIBLE) - invalidate any dirty - * buffers beyond the file EOF. - */ - if (info->loffset != NOOFFSET && vp->v_type == VREG && - bp->b_loffset >= info->loffset) { - bremfree(bp); - bp->b_flags |= B_INVAL | B_NOCACHE; - crit_exit(); - brelse(bp); - crit_enter(); - } - if (info->synchronous) { /* * Synchronous flushing. An error may be returned. diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index d084d5b5b2..145e366c23 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.47 2006/04/07 06:38:29 dillon Exp $ + * $DragonFly: src/sys/sys/vnode.h,v 1.48 2006/04/24 22:01:20 dillon Exp $ */ #ifndef _SYS_VNODE_H_ @@ -595,7 +595,7 @@ int vinvalbuf (struct vnode *vp, int save, struct thread *td, int slpflag, int slptimeo); int vtruncbuf (struct vnode *vp, struct thread *td, off_t length, int blksize); -int vfsync(struct vnode *vp, int waitfor, int passes, off_t loffset, +int vfsync(struct vnode *vp, int waitfor, int passes, int (*checkdef)(struct buf *), int (*waitoutput)(struct vnode *, struct thread *)); int vinitvmio(struct vnode *vp, off_t filesize); diff --git a/sys/vfs/hpfs/hpfs_vnops.c b/sys/vfs/hpfs/hpfs_vnops.c index 8854e84b26..f8fc108627 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.31 2006/04/01 20:46:53 dillon Exp $ + * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.32 2006/04/24 22:01:50 dillon Exp $ */ #include @@ -124,7 +124,7 @@ hpfs_fsync(struct vop_fsync_args *ap) #ifdef DIAGNOSTIC loop: #endif - vfsync(vp, ap->a_waitfor, 0, NOOFFSET, NULL, NULL); + vfsync(vp, ap->a_waitfor, 0, NULL, NULL); #ifdef DIAGNOSTIC if (ap->a_waitfor == MNT_WAIT && !RB_EMPTY(&vp->v_rbdirty_tree)) { vprint("hpfs_fsync: dirty", vp); diff --git a/sys/vfs/msdosfs/msdosfs_vnops.c b/sys/vfs/msdosfs/msdosfs_vnops.c index b9fbb50b41..c16eeae46d 100644 --- a/sys/vfs/msdosfs/msdosfs_vnops.c +++ b/sys/vfs/msdosfs/msdosfs_vnops.c @@ -1,5 +1,5 @@ /* $FreeBSD: src/sys/msdosfs/msdosfs_vnops.c,v 1.95.2.4 2003/06/13 15:05:47 trhodes Exp $ */ -/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vnops.c,v 1.34 2006/04/07 06:38:32 dillon Exp $ */ +/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vnops.c,v 1.35 2006/04/24 22:01:52 dillon Exp $ */ /* $NetBSD: msdosfs_vnops.c,v 1.68 1998/02/10 14:10:04 mrg Exp $ */ /*- @@ -869,7 +869,7 @@ msdosfs_fsync(struct vop_fsync_args *ap) #ifdef DIAGNOSTIC loop: #endif - vfsync(vp, ap->a_waitfor, 0, NOOFFSET, NULL, NULL); + vfsync(vp, ap->a_waitfor, 0, NULL, NULL); #ifdef DIAGNOSTIC if (ap->a_waitfor == MNT_WAIT && !RB_EMPTY(&vp->v_rbdirty_tree)) { vprint("msdosfs_fsync: dirty", vp); diff --git a/sys/vfs/specfs/spec_vnops.c b/sys/vfs/specfs/spec_vnops.c index 3076102d40..3d800e8cad 100644 --- a/sys/vfs/specfs/spec_vnops.c +++ b/sys/vfs/specfs/spec_vnops.c @@ -32,7 +32,7 @@ * * @(#)spec_vnops.c 8.14 (Berkeley) 5/21/95 * $FreeBSD: src/sys/miscfs/specfs/spec_vnops.c,v 1.131.2.4 2001/02/26 04:23:20 jlemon Exp $ - * $DragonFly: src/sys/vfs/specfs/spec_vnops.c,v 1.35 2006/04/07 06:38:33 dillon Exp $ + * $DragonFly: src/sys/vfs/specfs/spec_vnops.c,v 1.36 2006/04/24 22:01:52 dillon Exp $ */ #include @@ -425,7 +425,7 @@ spec_fsync(struct vop_fsync_args *ap) /* * Flush all dirty buffers associated with a block device. */ - error = vfsync(vp, ap->a_waitfor, 10000, NOOFFSET, NULL, NULL); + error = vfsync(vp, ap->a_waitfor, 10000, NULL, NULL); return (error); } diff --git a/sys/vfs/ufs/ffs_vnops.c b/sys/vfs/ufs/ffs_vnops.c index 95b29a4b5b..ff2ea7c11d 100644 --- a/sys/vfs/ufs/ffs_vnops.c +++ b/sys/vfs/ufs/ffs_vnops.c @@ -32,7 +32,7 @@ * * @(#)ffs_vnops.c 8.15 (Berkeley) 5/14/95 * $FreeBSD: src/sys/ufs/ffs/ffs_vnops.c,v 1.64 2000/01/10 12:04:25 phk Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_vnops.c,v 1.14 2006/03/24 18:35:34 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_vnops.c,v 1.15 2006/04/24 22:01:52 dillon Exp $ */ #include @@ -128,7 +128,8 @@ ffs_fsync(struct vop_fsync_args *ap) /* * Flush all dirty buffers associated with a vnode. */ - error = vfsync(vp, ap->a_waitfor, NIADDR + 1, loffset, ffs_checkdeferred, softdep_sync_metadata); + error = vfsync(vp, ap->a_waitfor, NIADDR + 1, ffs_checkdeferred, + softdep_sync_metadata); if (error == 0) error = UFS_UPDATE(vp, (ap->a_waitfor == MNT_WAIT)); return (error); -- 2.41.0