From nobody Fri Dec 06 14:51:40 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Y4Z306Gkfz5gNc1; Fri, 06 Dec 2024 14:51:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Y4Z304NM5z4FpJ; Fri, 6 Dec 2024 14:51:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1733496700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+GI72o1odPah0zssgDlXtLEqvCUtjQ68stIDSuZYSLs=; b=KbqTuqjEV565Y+X35s39Yd543gkWBR4s5bjeSrHochV8D2pIAf/swPvMBDYjp9CEe+GqpM Inco2zq24pz+iGwUY9I5IKyhg1uECPFC3OgJe9OOmCitZgVtw0tIAdAq+uF/N4TtkF3Un7 E078llQZMq2anPtqMJby0XHMr0AWczE8/AoROHdfgYylXgToE3IA6VQAzzO+BqtftG9GVB rVpcqSI7vmPgip3oOnjAV/wUKk7GZDpkr4fTqRWS+4WagDbmVesHaV0HvoIc+DvlnS8tFW /s6yhV2LDqFt151BTvoB+LS+iIAgt6pvVZe7riU/DXRDeiVhlHAnu9yLbI1MRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1733496700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+GI72o1odPah0zssgDlXtLEqvCUtjQ68stIDSuZYSLs=; b=yYr4/ZG2HgFWRnBjtN05P0AMLtkrgMZvA9L5TzHapqXw0fSENzrh5HCGNbB6xYpLFHsVOx yczRAoqRQnrh5D84AjtnlJfVpg0kKHin6+b0a/jIAsLkHTSW+SrXgWNNQ7YAAgP55T96nZ dMJKXKvlYZhjSe5kz4kW6TZrkfXd/d81fMGDZEwesCEdurSNVyby/GooUM0CJphrlRPXt6 rzHU1iIM9ByRBBzHLU702+hUXLU4jq89z+Y6rT49GlT1pKgMgjZJFxGP1uF52y1G9dX0AQ Mov8R/56yMgPFALwGFZNpL9hgXKtOc5V/lhKuGJvfMp6hVQ8rnvjeGj3dFjYzA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1733496700; a=rsa-sha256; cv=none; b=N9FPFyOyucMv9j6COvSySITaimZ8Vs+rSb6yJawHr0rk4fNKLjAT7Ytmlxwz4HtDMhL/4L E+ihkP4Q1/jCsFJQNb119YOpoIFuY1odwdlCLOPPI1R5lM5yiT+5t+3mgg+/0NKfl0Qz0H EWqIG4jJR9mL8lxJz4LSAGO8Oy37kEFkSbHeZ3e2m0Xj4KxIAdv51jItM0xvViSUV7S8Na Xkj/W+RJmhbD9Qmg0Yw4qh/B7lMwpmvRIgrjsymSPLRm3Jo3NL6ExQjlUh5aIPDGQ+BufA peBH0R2v0Hdvi5t5eor+41Z0N4cOJpXzOr5P09wA/Yt40JELJOauSwKg4o+FsA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Y4Z303X6vzhy9; Fri, 6 Dec 2024 14:51:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 4B6EpeFY028434; Fri, 6 Dec 2024 14:51:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 4B6Epe2Z028431; Fri, 6 Dec 2024 14:51:40 GMT (envelope-from git) Date: Fri, 6 Dec 2024 14:51:40 GMT Message-Id: <202412061451.4B6Epe2Z028431@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: b64e34805596 - stable/14 - buf: Add a runningbufclaim() helper List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b64e34805596130ae702ec9dd536888dd43f7456 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=b64e34805596130ae702ec9dd536888dd43f7456 commit b64e34805596130ae702ec9dd536888dd43f7456 Author: Mark Johnston AuthorDate: 2024-11-22 13:54:08 +0000 Commit: Mark Johnston CommitDate: 2024-12-06 14:51:09 +0000 buf: Add a runningbufclaim() helper No functional change intended. Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D47696 (cherry picked from commit 4efe531c9d50a803a28d001fab9cc3011eb1f587) --- sys/kern/vfs_bio.c | 15 ++++++++++++--- sys/sys/buf.h | 2 +- sys/ufs/ffs/ffs_snapshot.c | 11 ++++------- sys/ufs/ffs/ffs_vfsops.c | 4 +--- sys/vm/vnode_pager.c | 8 ++++---- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index c15e2c99fead..c7c890dd83bd 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -204,7 +204,7 @@ static int sysctl_bufspace(SYSCTL_HANDLER_ARGS); int vmiodirenable = TRUE; SYSCTL_INT(_vfs, OID_AUTO, vmiodirenable, CTLFLAG_RW, &vmiodirenable, 0, "Use the VM system for directory writes"); -long runningbufspace; +static long runningbufspace; SYSCTL_LONG(_vfs, OID_AUTO, runningbufspace, CTLFLAG_RD, &runningbufspace, 0, "Amount of presently outstanding async buffer io"); SYSCTL_PROC(_vfs, OID_AUTO, bufspace, CTLTYPE_LONG|CTLFLAG_MPSAFE|CTLFLAG_RD, @@ -939,6 +939,16 @@ runningbufwakeup(struct buf *bp) runningwakeup(); } +long +runningbufclaim(struct buf *bp, int space) +{ + long old; + + old = atomic_fetchadd_long(&runningbufspace, space); + bp->b_runningbufspace = space; + return (old); +} + /* * waitrunningbufspace() * @@ -2346,8 +2356,7 @@ bufwrite(struct buf *bp) /* * Normal bwrites pipeline writes */ - bp->b_runningbufspace = bp->b_bufsize; - space = atomic_fetchadd_long(&runningbufspace, bp->b_runningbufspace); + space = runningbufclaim(bp, bp->b_bufsize); #ifdef RACCT if (racct_enable) { diff --git a/sys/sys/buf.h b/sys/sys/buf.h index 7fffb52f84f2..7c0ea9605e28 100644 --- a/sys/sys/buf.h +++ b/sys/sys/buf.h @@ -514,7 +514,6 @@ extern int nbuf; /* The number of buffer headers */ extern u_long maxswzone; /* Max KVA for swap structures */ extern u_long maxbcache; /* Max KVA for buffer cache */ extern int maxbcachebuf; /* Max buffer cache block size */ -extern long runningbufspace; extern long hibufspace; extern int dirtybufthresh; extern int bdwriteskip; @@ -531,6 +530,7 @@ buf_mapped(struct buf *bp) return (bp->b_data != unmapped_buf); } +long runningbufclaim(struct buf *, int); void runningbufwakeup(struct buf *); void waitrunningbufspace(void); caddr_t kern_vfs_bio_buffer_alloc(caddr_t v, long physmem_est); diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index fedac50e38fb..ae3b444a19e9 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -2345,9 +2345,8 @@ ffs_copyonwrite(struct vnode *devvp, struct buf *bp) TAILQ_EMPTY(&sn->sn_head)) { VI_UNLOCK(devvp); if (saved_runningbufspace != 0) { - bp->b_runningbufspace = saved_runningbufspace; - atomic_add_long(&runningbufspace, - bp->b_runningbufspace); + (void)runningbufclaim(bp, + saved_runningbufspace); } return (0); /* Snapshot gone */ } @@ -2481,10 +2480,8 @@ ffs_copyonwrite(struct vnode *devvp, struct buf *bp) /* * I/O on bp will now be started, so count it in runningbufspace. */ - if (saved_runningbufspace != 0) { - bp->b_runningbufspace = saved_runningbufspace; - atomic_add_long(&runningbufspace, bp->b_runningbufspace); - } + if (saved_runningbufspace != 0) + (void)runningbufclaim(bp, saved_runningbufspace); return (error); } diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 14046de1e7b3..c56603752a50 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -2519,9 +2519,7 @@ ffs_geom_strategy(struct bufobj *bo, struct buf *bp) return; } } - bp->b_runningbufspace = bp->b_bufsize; - atomic_add_long(&runningbufspace, - bp->b_runningbufspace); + (void)runningbufclaim(bp, bp->b_bufsize); } else { error = ffs_copyonwrite(vp, bp); if (error != 0 && error != EOPNOTSUPP) { diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index a690e48e07ee..496c3586c321 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -702,8 +702,7 @@ vnode_pager_input_smlfs(vm_object_t object, vm_page_t m) bp->b_vp = vp; bp->b_bcount = bsize; bp->b_bufsize = bsize; - bp->b_runningbufspace = bp->b_bufsize; - atomic_add_long(&runningbufspace, bp->b_runningbufspace); + (void)runningbufclaim(bp, bp->b_bufsize); /* do the input */ bp->b_iooffset = dbtob(bp->b_blkno); @@ -1145,7 +1144,7 @@ vnode_pager_generic_getpages(struct vnode *vp, vm_page_t *m, int count, bp->b_wcred = crhold(curthread->td_ucred); pbgetbo(bo, bp); bp->b_vp = vp; - bp->b_bcount = bp->b_bufsize = bp->b_runningbufspace = bytecount; + bp->b_bcount = bp->b_bufsize = bytecount; bp->b_iooffset = dbtob(bp->b_blkno); KASSERT(IDX_TO_OFF(m[0]->pindex - bp->b_pages[0]->pindex) == (blkno0 - bp->b_blkno) * DEV_BSIZE + @@ -1155,7 +1154,8 @@ vnode_pager_generic_getpages(struct vnode *vp, vm_page_t *m, int count, (uintmax_t)m[0]->pindex, (uintmax_t)bp->b_pages[0]->pindex, (uintmax_t)blkno0, (uintmax_t)bp->b_blkno)); - atomic_add_long(&runningbufspace, bp->b_runningbufspace); + (void)runningbufclaim(bp, bp->b_bufsize); + VM_CNT_INC(v_vnodein); VM_CNT_ADD(v_vnodepgsin, bp->b_npages);