git: 05812ed9e71b - stable/13 - buf: Fix the dirtybufthresh check
Mark Johnston
markj at FreeBSD.org
Thu Mar 4 13:21:02 UTC 2021
The branch stable/13 has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=05812ed9e71b434293989f4e915264e6f3bc7a0d
commit 05812ed9e71b434293989f4e915264e6f3bc7a0d
Author: Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-02-25 15:04:44 +0000
Commit: Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-03-04 13:20:12 +0000
buf: Fix the dirtybufthresh check
dirtybufthresh is a watermark, slightly below the high watermark for
dirty buffers. When a delayed write is issued, the dirtying thread will
start flushing buffers if the dirtybufthresh watermark is reached. This
helps ensure that the high watermark is not reached, otherwise
performance will degrade as clustering and other optimizations are
disabled (see buf_dirty_count_severe()).
When the buffer cache was partitioned into "domains", the dirtybufthresh
threshold checks were not updated. Fix this.
Reported by: Shrikanth R Kamath <kshrikanth at juniper.net>
Reviewed by: rlibby, mckusick, kib, bdrewery
Sponsored by: Juniper Networks, Inc., Klara, Inc.
Fixes: 3cec5c77d6
Differential Revision: https://reviews.freebsd.org/D28901
(cherry picked from commit 369706a6f887f8ffe1037d78bc31565ec701d72b)
---
sys/kern/vfs_bio.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index 9264388e9a3e..8519afe96633 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -2325,11 +2325,13 @@ void
bufbdflush(struct bufobj *bo, struct buf *bp)
{
struct buf *nbp;
+ struct bufdomain *bd;
- if (bo->bo_dirty.bv_cnt > dirtybufthresh + 10) {
+ bd = &bdomain[bo->bo_domain];
+ if (bo->bo_dirty.bv_cnt > bd->bd_dirtybufthresh + 10) {
(void) VOP_FSYNC(bp->b_vp, MNT_NOWAIT, curthread);
altbufferflushes++;
- } else if (bo->bo_dirty.bv_cnt > dirtybufthresh) {
+ } else if (bo->bo_dirty.bv_cnt > bd->bd_dirtybufthresh) {
BO_LOCK(bo);
/*
* Try to find a buffer to flush.
More information about the dev-commits-src-all
mailing list