From nobody Mon Feb 17 23:42:28 2025 X-Original-To: dev-commits-src-all@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 4YxfMn1LBQz5ncYN; Mon, 17 Feb 2025 23:42:29 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YxfMn0v9Mz3CgC; Mon, 17 Feb 2025 23:42:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739835749; 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=NMQqafUlLVOWuV4eMSbazygx9Z1zfqgeVRGw8DpjPAs=; b=vqRjKMKoggK5PzOMvx7JEF27ayqdzU62dkuBwIVRghOmvP2fWA26aqw26MXCXSk+4Nae1k t58h1CbLknGEvrYThXcGpSxGjFgpCQUmuW1kJLAzWuzIa4dcM1b6xJry6JHvI+1IxCjuLL NaFv6eE3URvAKw1s8YIGhO43sM0l2vAnZA24VCnX242IPgPyyCc9wbn/HUxNjFol9euQgc NrEpACspCwn/5zw5u9WGE/NYzqce5S6Wj7zS7ONDLD8L49Mn+71/vffG/3OQI0Yrg5w5O7 fQdmLkp7O7GgYZdN6XrbNzBbI9JE6GPRfk3Htalp6a5RlB4YUQNOT+OmRZk8qA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1739835749; a=rsa-sha256; cv=none; b=VNg8olhILO3Fe+2Ad2rcfbPC0KTEVR6CG7M/QZZJGkfWAHcGjhEVp1nu5OPLUyuSzZ92Dl zCKOq0ZmdXihHggemNcL3m2fhiQ/4ChsuGnHRYtkOvotkLXljXLbbkuclKOnpvJElFVi1Z MWqfK/zdo3dZMTXCVL8SobyLIl2NR5McPtNHRM1ueXjBvDZADrHpE8gKjshTukDXaIC2Sq 0HbTxQ7sQfEZ6rkeka5xXi98kehKWYcEbGAaHnqixtJPJsw7TsqSI92/0Bhn+3rHBiDw2e 1jvVot+yaYzcTeULqnVFI5bpFdFn4d3BGmxnuF/cgm4bbf4CHZh85wUvo8O8uQ== 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=1739835749; 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=NMQqafUlLVOWuV4eMSbazygx9Z1zfqgeVRGw8DpjPAs=; b=l0CJld3nNgL6/+Uzlc6/w2tpp02IdddPlL5QwSLB97/naDUvpiyYL15j9LlYKH0tYSdrUn +0ynmp9UGAVFlHenPVZlANx5sBQhTH1aRrakqr9ImnVF18veW4flZG7TKKKbywLBEg51RL 7chp8w92MsqVTr3CJ8t+fSUYXYxYauafEw+I1NyTexoCIlMWn0p7fB/UDmEmLx/raQFfV9 WzKOX2mr93gBEiKYKkdn/I0We04WNUERSQTMgZD3KyP1k578jfdVTrU0/NKz1yTwKzWgHm IzdawLIl0Dy8RW+GFYT2ji6LkX5x7rt3f6dtX5/e/Mx7vj4y0+9MN38c7Owq6g== 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 4YxfMn0GGRzvTt; Mon, 17 Feb 2025 23:42:29 +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 51HNgSR1091809; Mon, 17 Feb 2025 23:42:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51HNgSgd091806; Mon, 17 Feb 2025 23:42:28 GMT (envelope-from git) Date: Mon, 17 Feb 2025 23:42:28 GMT Message-Id: <202502172342.51HNgSgd091806@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 7e26f1c21049 - main - nfscl: Move layout high water variables into clientID List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/main X-Git-Reftype: branch X-Git-Commit: 7e26f1c21049b5a1a2f490d8ac1909ccb24f0db2 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=7e26f1c21049b5a1a2f490d8ac1909ccb24f0db2 commit 7e26f1c21049b5a1a2f490d8ac1909ccb24f0db2 Author: Rick Macklem AuthorDate: 2025-02-17 23:41:34 +0000 Commit: Rick Macklem CommitDate: 2025-02-17 23:41:34 +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. MFC after: 2 weeks --- 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 86b51a7b3343..7e5baa453ad0 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 **); @@ -919,6 +918,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, @@ -2978,13 +2979,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) @@ -5286,7 +5288,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) @@ -5661,7 +5663,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); }