summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ext2fs/ext2fs_inode.c
diff options
context:
space:
mode:
authorbeck <beck@openbsd.org>2008-06-10 20:14:36 +0000
committerbeck <beck@openbsd.org>2008-06-10 20:14:36 +0000
commit30ab7dc4b7d5ee681b6f2fff0471c66b7178a51a (patch)
tree201e7de25cd00b8c73dc838662dc445274e2b38b /sys/ufs/ext2fs/ext2fs_inode.c
parentwhen walking the entire state table it makes much more sense to walk (diff)
downloadwireguard-openbsd-30ab7dc4b7d5ee681b6f2fff0471c66b7178a51a.tar.xz
wireguard-openbsd-30ab7dc4b7d5ee681b6f2fff0471c66b7178a51a.zip
Buffer cache revamp
1) remove multiple size queues, introduced as a stopgap. 2) decouple pages containing data from their mappings 3) only keep buffers mapped when they actually have to be mapped (right now, this is when buffers are B_BUSY) 4) New functions to make a buffer busy, and release the busy flag (buf_acquire and buf_release) 5) Move high/low water marks and statistics counters into a structure 6) Add a sysctl to retrieve buffer cache statistics Tested in several variants and beat upon by bob and art for a year. run accidentally on henning's nfs server for a few months... ok deraadt@, krw@, art@ - who promises to be around to deal with any fallout
Diffstat (limited to 'sys/ufs/ext2fs/ext2fs_inode.c')
-rw-r--r--sys/ufs/ext2fs/ext2fs_inode.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/ufs/ext2fs/ext2fs_inode.c b/sys/ufs/ext2fs/ext2fs_inode.c
index a78632ce518..a974b9f0874 100644
--- a/sys/ufs/ext2fs/ext2fs_inode.c
+++ b/sys/ufs/ext2fs/ext2fs_inode.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ext2fs_inode.c,v 1.39 2007/10/29 17:06:20 chl Exp $ */
+/* $OpenBSD: ext2fs_inode.c,v 1.40 2008/06/10 20:14:37 beck Exp $ */
/* $NetBSD: ext2fs_inode.c,v 1.24 2001/06/19 12:59:18 wiz Exp $ */
/*
@@ -466,6 +466,8 @@ ext2fs_indirtrunc(struct inode *ip, int32_t lbn, int32_t dbn, int32_t lastbn, in
bp = getblk(vp, lbn, (int)fs->e2fs_bsize, 0, 0);
if (!(bp->b_flags & (B_DONE | B_DELWRI))) {
curproc->p_stats->p_ru.ru_inblock++; /* pay for read */
+ bcstats.pendingreads++;
+ bcstats.numreads++;
bp->b_flags |= B_READ;
if (bp->b_bcount > bp->b_bufsize)
panic("ext2fs_indirtrunc: bad buffer size");