From nobody Mon Mar 03 01:56:28 2025 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 4Z5hkN4Qj1z5VhW4; Mon, 03 Mar 2025 01:56:28 +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 4Z5hkN3jXvz3D4M; Mon, 03 Mar 2025 01:56:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1740966988; 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=vvEDs1B00Sl/E9H0l3nWSI5Uk8N6GVDebY38JCamzaM=; b=JwklflnZQMQWCBcU6zgbi1ybW8K/d6tix9+xXJxTmPvVP+2DZ4qvwlcsVfKVk+F9C2OXhV j7tKPowAIC1s2CslF5gZuiIZk53sfkrRCyRZ2W90VIiNfN8R1I1h8LD6JF/rOnqZvfO5cJ Q7RCCLSgE/A0go5DNJq2B9WzSpvjelyPKD5d6XmUwXt0IheoGw3o5XrlxiL/k8wIT2QakE ir3grE+s60qPMlKn3hXdMLVpxCbFWXjN1PXyG1Bq5T2dsxX49rfqgNFxc/flja0k+9plBW lFS77wZDJ2nXFpbA4C//nU+zZJk4SJzAVaf5UD7sV7hseLRD8nxV108EZ4nS8w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1740966988; a=rsa-sha256; cv=none; b=ImCI6b1u4qy08CQto2T5/Nx0b3ui+HB41W4rbw1rd30r2VhAGV/M/AlKJFrF42VCLQbnw0 nF5WPinUuL+z+8k1BiHrYbaW9fGZGskZsg5h3QP8sbP+iFbYH6f4eAcoVlxP3TABkI+Y/o fvGzO4cEiMPaIuRV6JAnP4IlkV8lNSOke1NlqGMGo5qC+wxU+RhCJcA5oBNZivS2aObTAw D/9KxlAka7x1J+9fTcsJu23Ras39LcjFG4RZkb7g8UHS7PBw/UnwRdi6SvuzYGQXJokYGV gk/U01QogUl6eBN5cWZEHz5X1M4vgeyJdIJoRA+ArD1bNv0LFNH9i6fYU+6iuw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1740966988; 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=vvEDs1B00Sl/E9H0l3nWSI5Uk8N6GVDebY38JCamzaM=; b=VHI95rgfKw+wceUpjcU6ubRe4eSq0QX1aJle5329sAmAAlcvNfhgFnrmLmMpUJx7SJHHw4 lZDjuozHU/x5sz0qdEglVR3h0Hc2EThpca+19gWyk3syJ2ue24upZdggQEpn74yjg6UnE2 L66Af9YHQVzPXwreUKjl6U6gsaCwQqtXZYpLJwxPBzqz0xz1r2RoROkLBP1cvv3myBPQud 9DoxzDhOzoxwPzkW5t38QJ6IfdgHnpCyF0VWRRx1/jtsS0SEXfaZ7vQ/IFt3Se1Xuy2fiQ 1OsBis9Bw+4EgAaL4LuQgztVGcLU/djpAdYmvtHvX2ZVb9mlVDLVz0qcG7ux5A== 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 4Z5hkN3BkKzBXP; Mon, 03 Mar 2025 01:56:28 +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 5231uS1P002621; Mon, 3 Mar 2025 01:56:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5231uSTM002618; Mon, 3 Mar 2025 01:56:28 GMT (envelope-from git) Date: Mon, 3 Mar 2025 01:56:28 GMT Message-Id: <202503030156.5231uSTM002618@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: b27900b8d9db - stable/14 - nfscl: Move layout high water variables into clientID 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: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b27900b8d9db139725bdb4e8e239a0d9ef308e4b Auto-Submitted: auto-generated The branch stable/14 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=b27900b8d9db139725bdb4e8e239a0d9ef308e4b commit b27900b8d9db139725bdb4e8e239a0d9ef308e4b Author: Rick Macklem AuthorDate: 2025-02-17 23:41:34 +0000 Commit: Rick Macklem CommitDate: 2025-03-03 01:55:37 +0000 nfscl: Move layout high water variables into clientID Commit f5aff1871d32 moved the delegation high water variables into the clientID structure, so that they are now per mount instead of global. This patch does the same for the layout highwater variables. It happens that the layout highwater variables are not actually used. This patch changes the code to use them. This is needed to add support for the CB_RECALL_ANY callback in a future commit. This patch only affects NFSv4.1/4.2 mounts with the "pnfs" mount option. The effect on these mounts will be minimal, since layouts are returned when they are stale and this normally ensures that the highwater mark is never hit. (cherry picked from commit 7e26f1c21049b5a1a2f490d8ac1909ccb24f0db2) --- sys/fs/nfs/nfsclstate.h | 2 ++ sys/fs/nfsclient/nfs_clstate.c | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/sys/fs/nfs/nfsclstate.h b/sys/fs/nfs/nfsclstate.h index 84088a2a4fd2..92669ff8d1aa 100644 --- a/sys/fs/nfs/nfsclstate.h +++ b/sys/fs/nfs/nfsclstate.h @@ -118,6 +118,8 @@ struct nfsclclient { time_t nfsc_expire; int nfsc_delegcnt; int nfsc_deleghighwater; + int nfsc_layoutcnt; + int nfsc_layouthighwater; u_int32_t nfsc_clientidrev; u_int32_t nfsc_rev; u_int32_t nfsc_renew; diff --git a/sys/fs/nfsclient/nfs_clstate.c b/sys/fs/nfsclient/nfs_clstate.c index ad30a306c31d..12894e3dcb84 100644 --- a/sys/fs/nfsclient/nfs_clstate.c +++ b/sys/fs/nfsclient/nfs_clstate.c @@ -94,7 +94,6 @@ NFSCLSTATEMUTEX; int nfscl_inited = 0; struct nfsclhead nfsclhead; /* Head of clientid list */ -static int nfscl_layoutcnt = 0; static int nfscl_getopen(struct nfsclownerhead *, struct nfsclopenhash *, u_int8_t *, int, u_int8_t *, u_int8_t *, u_int32_t, struct nfscllockowner **, struct nfsclopen **); @@ -923,6 +922,8 @@ nfscl_getcl(struct mount *mp, struct ucred *cred, NFSPROC_T *p, clp->nfsc_flags = NFSCLFLAGS_INITED; clp->nfsc_delegcnt = 0; clp->nfsc_deleghighwater = NFSCLDELEGHIGHWATER; + clp->nfsc_layoutcnt = 0; + clp->nfsc_layouthighwater = NFSCLLAYOUTHIGHWATER; clp->nfsc_clientidrev = 1; clp->nfsc_cbident = nfscl_nextcbident(); nfscl_fillclid(nmp->nm_clval, uuid, clp->nfsc_id, @@ -2982,13 +2983,14 @@ tryagain2: lyp = TAILQ_LAST(&clp->nfsc_layout, nfscllayouthead); while (lyp != NULL) { nlyp = TAILQ_PREV(lyp, nfscllayouthead, nfsly_list); - if (lyp->nfsly_timestamp < NFSD_MONOSEC && + if ((lyp->nfsly_timestamp < NFSD_MONOSEC || + clp->nfsc_layoutcnt > clp->nfsc_layouthighwater) && (lyp->nfsly_flags & (NFSLY_RECALL | NFSLY_RETONCLOSE)) == 0 && lyp->nfsly_lock.nfslock_usecnt == 0 && lyp->nfsly_lock.nfslock_lock == 0) { NFSCL_DEBUG(4, "ret stale lay=%d\n", - nfscl_layoutcnt); + clp->nfsc_layoutcnt); recallp = malloc(sizeof(*recallp), M_NFSLAYRECALL, M_NOWAIT); if (recallp == NULL) @@ -5293,7 +5295,7 @@ nfscl_layout(struct nfsmount *nmp, vnode_t vp, u_int8_t *fhp, int fhlen, LIST_INSERT_HEAD(NFSCLLAYOUTHASH(clp, fhp, fhlen), lyp, nfsly_hash); lyp->nfsly_timestamp = NFSD_MONOSEC + 120; - nfscl_layoutcnt++; + clp->nfsc_layoutcnt++; nfsstatsv1.cllayouts++; } else { if (retonclose != 0) @@ -5668,7 +5670,7 @@ nfscl_freelayout(struct nfscllayout *layp) LIST_REMOVE(rp, nfsrecly_list); free(rp, M_NFSLAYRECALL); } - nfscl_layoutcnt--; + layp->nfsly_clp->nfsc_layoutcnt--; nfsstatsv1.cllayouts--; free(layp, M_NFSLAYOUT); }