From nobody Mon Feb 17 00:03:04 2025 X-Original-To: dev-commits-src-main@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 4Yx2t15mHyz5p826; Mon, 17 Feb 2025 00:03:05 +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 4Yx2t116S2z3wD7; Mon, 17 Feb 2025 00:03:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739750585; 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=IKpTo5qnVyV6aOpB1hWp/WPSW6RujcY7K3rY3wpi9mA=; b=vwYOYFEzlnGqxpTXHRRg1CLoNhRuFKWaiBFnYN6feF60YLZH2Y0nMK7d+RkhuZam8yak6V g2DJ/iL+0NrMfqG55iS+zohNm4jDkwRFpBirfvCissQm/87K+bIqw2VpsAONI3pnw1MOgF EIku7cTA2OhirgoKqwXe0FkHPuYTGs6I+Ih2K/ObTm1sCXoVWYFwQ3qybjW8h/rZZ5V5fi FJbwX4gc1mwj6LQHWmlSjNfTfC15tKmX/QjrnNZFDiuPPUddoNumnIuyOHyzlL+55N8IvK iqWr+C4BFkX3UHi3Oe38jP44ywiJEfVtKPQjJMbzS3R684qVg8oe+PZAmvvsvQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1739750585; a=rsa-sha256; cv=none; b=dtLsXvUZBlXpI5qN6WbkyNQSEgwJpSXI0041THWGxeAVGd/9X4lzFdD40VwmqDZiVoTDiV 6fiAzJJoM9qctfibRDPW9D5vmSUNQb5AlTJrwFO/jYeoh+QsiMB6rtAy5he7DNqhJoCj1/ e8w2cXu6QQ2Q9ToUdllDXb+4lZYJeG3kzErLHSWJ1z8GIt5T3ON4ncmI9T3C7in4qAmhcD V/gIQm1NYYdODCCj5+QVDUDKvKI5Jwp+ebmAI+TQ+r5HDx829FWfD4uy/3efy9hLfZmZEj NTRhI0kVb1wDFWDUgewplMOZ24LO+Bn2919R6zuz8hX87ljiEzI+322cuinrhg== 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=1739750585; 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=IKpTo5qnVyV6aOpB1hWp/WPSW6RujcY7K3rY3wpi9mA=; b=Rv0OsPUSqKnWTx/qVaDx6uTZfueTRAjpIgEINckk4Q5ZtzveINXPGNfAWA/rOUa2DcF95L /pE2RMkFvoCrtRdvlCt+JRMdY3JLdqQ6Ql2V24eIMnvgjZppd965oNI7yceCiJcldrVpyh gYy+Ud/81qIfZSY2hci7CCt/qGyBHGbDEWb1Ji5U2+4ymqCw+t4JwjXbD48tUMTJUrjJ82 Fsg2ctR37aZEwITJ+tB/WELvqz3xYYtyw+ioQAobMXmH1bjhkUJw6HFw3vftEDDfSsDI3g kuMTPvOsvE+9WFbXjMFkt7wMgv80kd+n1xAQn8PVRzh6K7Mob2f96chbj6wwYA== 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 4Yx2t10b4Gz17v9; Mon, 17 Feb 2025 00:03:05 +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 51H034w5096844; Mon, 17 Feb 2025 00:03:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51H034lY096841; Mon, 17 Feb 2025 00:03:04 GMT (envelope-from git) Date: Mon, 17 Feb 2025 00:03:04 GMT Message-Id: <202502170003.51H034lY096841@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: f5aff1871d32 - main - nfscl: Move delegation high water variables into clientID List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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: f5aff1871d3273b3cd3621ea5d3e37cdd807e66f Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=f5aff1871d3273b3cd3621ea5d3e37cdd807e66f commit f5aff1871d3273b3cd3621ea5d3e37cdd807e66f Author: Rick Macklem AuthorDate: 2025-02-17 00:01:54 +0000 Commit: Rick Macklem CommitDate: 2025-02-17 00:01:54 +0000 nfscl: Move delegation high water variables into clientID Without this patch, the variables used to maintain a high water limit for delegations are global and apply to all mounts. This patch moves them into the clientID structure, which makes them per mount. This is needed to add support for the CB_RECALL_ANY callback in a future commit. The only effect of this patch is an increase in the total number of delegations held if there are multiple NFSv4 mounts to NFSv4 servers with delegations enabled. Since the default of NFSCLDELEGHIGHWATER is fairly small, this should not have a significant impact. MFC after: 2 weeks --- sys/fs/nfs/nfsclstate.h | 2 ++ sys/fs/nfsclient/nfs_clstate.c | 15 ++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/sys/fs/nfs/nfsclstate.h b/sys/fs/nfs/nfsclstate.h index d9f5ed13b54f..84088a2a4fd2 100644 --- a/sys/fs/nfs/nfsclstate.h +++ b/sys/fs/nfs/nfsclstate.h @@ -116,6 +116,8 @@ struct nfsclclient { struct proc *nfsc_renewthread; struct nfsmount *nfsc_nmp; time_t nfsc_expire; + int nfsc_delegcnt; + int nfsc_deleghighwater; 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 f5621fd0a758..86b51a7b3343 100644 --- a/sys/fs/nfsclient/nfs_clstate.c +++ b/sys/fs/nfsclient/nfs_clstate.c @@ -94,8 +94,6 @@ NFSCLSTATEMUTEX; int nfscl_inited = 0; struct nfsclhead nfsclhead; /* Head of clientid list */ -static int nfscl_deleghighwater = NFSCLDELEGHIGHWATER; -static int nfscl_delegcnt = 0; 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, @@ -462,7 +460,7 @@ nfscl_deleg(mount_t mp, struct nfsclclient *clp, u_int8_t *nfhp, nfsdl_hash); dp->nfsdl_timestamp = NFSD_MONOSEC + 120; nfsstatsv1.cldelegates++; - nfscl_delegcnt++; + clp->nfsc_delegcnt++; } else { /* * A delegation already exists. If the new one is a Write @@ -919,6 +917,8 @@ nfscl_getcl(struct mount *mp, struct ucred *cred, NFSPROC_T *p, for (i = 0; i < NFSCLLAYOUTHASHSIZE; i++) LIST_INIT(&clp->nfsc_layouthash[i]); clp->nfsc_flags = NFSCLFLAGS_INITED; + clp->nfsc_delegcnt = 0; + clp->nfsc_deleghighwater = NFSCLDELEGHIGHWATER; clp->nfsc_clientidrev = 1; clp->nfsc_cbident = nfscl_nextcbident(); nfscl_fillclid(nmp->nm_clval, uuid, clp->nfsc_id, @@ -1751,10 +1751,10 @@ nfscl_freedeleg(struct nfscldeleghead *hdp, struct nfscldeleg *dp, bool freeit) TAILQ_REMOVE(hdp, dp, nfsdl_list); LIST_REMOVE(dp, nfsdl_hash); + dp->nfsdl_clp->nfsc_delegcnt--; if (freeit) free(dp, M_NFSCLDELEG); nfsstatsv1.cldelegates--; - nfscl_delegcnt--; } /* @@ -2864,7 +2864,7 @@ tryagain: nfsdl_list); LIST_REMOVE(dp, nfsdl_hash); TAILQ_INSERT_HEAD(&dh, dp, nfsdl_list); - nfscl_delegcnt--; + clp->nfsc_delegcnt--; nfsstatsv1.cldelegates--; } NFSLOCKCLSTATE(); @@ -2894,7 +2894,8 @@ tryagain: * The tailq list is in LRU order. */ dp = TAILQ_LAST(&clp->nfsc_deleg, nfscldeleghead); - while (nfscl_delegcnt > nfscl_deleghighwater && dp != NULL) { + while (clp->nfsc_delegcnt > clp->nfsc_deleghighwater && + dp != NULL) { ndp = TAILQ_PREV(dp, nfscldeleghead, nfsdl_list); if (dp->nfsdl_rwlock.nfslock_usecnt == 0 && dp->nfsdl_rwlock.nfslock_lock == 0 && @@ -2921,7 +2922,7 @@ tryagain: TAILQ_REMOVE(&clp->nfsc_deleg, dp, nfsdl_list); LIST_REMOVE(dp, nfsdl_hash); TAILQ_INSERT_HEAD(&dh, dp, nfsdl_list); - nfscl_delegcnt--; + clp->nfsc_delegcnt--; nfsstatsv1.cldelegates--; } }