summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_vnops.c
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1998-02-01 01:59:12 +0000
committerdyson <dyson@FreeBSD.org>1998-02-01 01:59:12 +0000
commit1d361dc623b0ce8b1559a9861ffe0313a175d5de (patch)
treeeeaf0af014d3745c3c133d8c86659b504029950b /sys/ufs/ffs/ffs_vnops.c
parent2a227e28011ea078b3715f7bce42bc5a81cb144b (diff)
downloadFreeBSD-src-1d361dc623b0ce8b1559a9861ffe0313a175d5de.zip
FreeBSD-src-1d361dc623b0ce8b1559a9861ffe0313a175d5de.tar.gz
Support more intelligent sync operations for MNT_NOATIME.
PR: kern/5577 Submitted by: Craig Leres <leres@ee.lbl.gov>
Diffstat (limited to 'sys/ufs/ffs/ffs_vnops.c')
-rw-r--r--sys/ufs/ffs/ffs_vnops.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index d3b68b7..f89b8a3 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vnops.c 8.15 (Berkeley) 5/14/95
- * $Id: ffs_vnops.c,v 1.37 1997/10/27 13:33:45 bde Exp $
+ * $Id: ffs_vnops.c,v 1.38 1998/01/06 05:23:44 dyson Exp $
*/
#include <sys/param.h>
@@ -105,6 +105,9 @@ SYSCTL_NODE(_vfs, MOUNT_UFS, ffs, CTLFLAG_RW, 0, "FFS filesystem");
#include <ufs/ufs/ufs_readwrite.c>
+int ffs_log_sync = 0;
+
+
/*
* Synch an open file.
*/
@@ -126,7 +129,6 @@ ffs_fsync(ap)
int s;
daddr_t lbn;
-
if (vp->v_type == VBLK) {
lbn = INT_MAX;
} else {
@@ -135,6 +137,12 @@ ffs_fsync(ap)
lbn = lblkno(ip->i_fs, (ip->i_size + ip->i_fs->fs_bsize - 1));
}
+ if (ffs_log_sync) {
+ struct inode* ip = VTOI(vp);
+ printf("fsync i %u iflags 0x%x vn 0x%x vtype %d tag %d vflags 0x%x\n",
+ ip->i_number, ip->i_flag, vp, vp->v_type, vp->v_tag, vp->v_flag);
+ }
+
pass = 0;
/*
* Flush all dirty buffers associated with a vnode.
@@ -148,6 +156,11 @@ loop:
if ((bp->b_flags & B_DELWRI) == 0)
panic("ffs_fsync: not dirty");
+ if (ffs_log_sync) {
+ printf(" blk %u (%u) flags 0x%x vn 0x%x\n", bp->b_lblkno, bp->b_blkno,
+ bp->b_flags, bp->b_vp);
+ }
+
if (((bp->b_vp != vp) || (ap->a_waitfor != MNT_NOWAIT)) ||
((vp->v_type != VREG) && (vp->v_type != VBLK))) {
@@ -206,5 +219,5 @@ loop:
}
gettime(&tv);
- return (UFS_UPDATE(ap->a_vp, &tv, &tv, ap->a_waitfor == MNT_WAIT));
+ return (UFS_UPDATE(ap->a_vp, &tv, &tv, 1));
}
OpenPOWER on IntegriCloud