Index: sys/ufs/ffs/ffs_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ffs/ffs_vnops.c,v retrieving revision 1.129 retrieving revision 1.130 diff -u -r1.129 -r1.130 --- sys/ufs/ffs/ffs_vnops.c 7 Apr 2004 11:21:18 -0000 1.129 +++ sys/ufs/ffs/ffs_vnops.c 21 May 2004 12:05:48 -0000 1.130 @@ -662,6 +662,8 @@ vfs_bio_clrbuf(bp); if (ioflag & IO_DIRECT) bp->b_flags |= B_DIRECT; + if ((ioflag & (IO_SYNC|IO_INVAL)) == (IO_SYNC|IO_INVAL)) + bp->b_flags |= B_NOCACHE; if (uio->uio_offset + xfersize > ip->i_size) { ip->i_size = uio->uio_offset + xfersize; Index: sys/vm/vm_object.c =================================================================== RCS file: /home/ncvs/src/sys/vm/vm_object.c,v retrieving revision 1.323 retrieving revision 1.324 diff -u -r1.323 -r1.324 --- sys/vm/vm_object.c 6 Apr 2004 20:15:36 -0000 1.323 +++ sys/vm/vm_object.c 25 May 2004 18:40:53 -0000 1.324 @@ -104,6 +104,10 @@ SYSCTL_INT(_vm, OID_AUTO, msync_flush_flags, CTLFLAG_RW, &msync_flush_flags, 0, ""); +static int old_msync; +SYSCTL_INT(_vm, OID_AUTO, old_msync, CTLFLAG_RW, &old_msync, 0, + "Use old (insecure) msync behavior"); + static void vm_object_qcollapse(vm_object_t object); static int vm_object_page_collect_flush(vm_object_t object, vm_page_t p, int curgeneration, int pagerflags); @@ -1034,7 +1038,7 @@ vm_object_page_remove(object, OFF_TO_IDX(offset), OFF_TO_IDX(offset + size + PAGE_MASK), - FALSE); + old_msync ? FALSE : TRUE); } VM_OBJECT_UNLOCK(object); }