From nobody Mon Mar 03 01:55:21 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 4Z5hj56GyKz5VhVs; Mon, 03 Mar 2025 01:55:21 +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 4Z5hj55LLwz3CZk; Mon, 03 Mar 2025 01:55:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1740966921; 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=/bkljQduyE15WAaHwVjPKeiRXzoE7TNnOkE9yQXok1s=; b=g9+ab6M6Perc6cuCzguhq1N1sE29xBjv1G6r/tJ0UjbhpkUXl2mC1H4obL3oB1R1uFuXwH yBXDnWjTw+IgevLlaN/Kj9nFBcPUF92o37hoMtp2gRotsNpPdYSc0o3GGCGMpTKmsjVMy9 6CGBXq5E1TD0envoAVdDD5t4UHmz3gkw1CANDC4qLS2FvO0ZoRsyKJD0/so38cPEGqd8q8 WD2txrZcloRWpmMOkSBuFm6lUzLVmM4joxnb8++ZRwcIUPJ1f5lPcb9CIGw6zS46AdKtVM vwxJ5Jv3U/dXPmBVUekz1Z65fjYZ9Nb2mQFhGyhJUvW3jWVb827brwH9IyWdHQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1740966921; a=rsa-sha256; cv=none; b=pCBFWMaFW3fd2ZTsFt8j4AYPTfbN2RqwxOhK2q/FRdbBHNogLp5azGKWIrIwLzH2ra5o7o QTV+JCmsPMxAEjv3XoPld8ARRx/oxQwIBUIqjkGwUGGLIMuHxSoTJGec64TaoX0OzsomqJ TDcQX8wnMXm0NXST6szo0y6BnOAth0N7cXvil+mBBWNJf/g8O2HaTWNr7z9wjAjOgZf2qx PeXSqbRsehAYu+/rG1bgSrHXKaVlFAf0x9mFllA69fhUD1P3pHdbp7ZX/+GJZ3R1Fj1gx7 Ui7Dhw3e/f3ROsJF9D/rX2zbLK20SgQF+6ASgyntRF8eknW0xVLM4pB28HT6Yw== 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=1740966921; 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=/bkljQduyE15WAaHwVjPKeiRXzoE7TNnOkE9yQXok1s=; b=rcjf9brxu6HiY/ffSrXA4G3Rl0BXqwniu43yXiMFUsVT/nVlsCu7+7CDn8wgfnk82rCLgI 9PxpCWQpsi0X+2ivR0Ubp97tb1YT11W1Qa4EJaQRFeq+PnzE2uDPBQ7H5Mo5DV8tnTeaOi r5uP5xAc1u933vO8iulxZlW63rtpUJfPXBqis4lBm0fY7bwcY/girb5/HG4CruUPkNysxI PERNsasoE11VPnqoNRlDNBswDBL7jAEatYq1E7ExeSEFF+dnqJ665FbO1WBvrF0NT+9n34 KUEQEmpbdJz5bn0wglb7TJys6/8DMYy9xDZZ6XJEeqcDBX7dER/JHBRthYcKMA== 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 4Z5hj54d9mzBXN; Mon, 03 Mar 2025 01:55:21 +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 5231tLaq002178; Mon, 3 Mar 2025 01:55:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5231tLSN002175; Mon, 3 Mar 2025 01:55:21 GMT (envelope-from git) Date: Mon, 3 Mar 2025 01:55:21 GMT Message-Id: <202503030155.5231tLSN002175@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: 9f5457996e00 - stable/14 - nfscl: Move delegation 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: 9f5457996e005e12db7737bddaada55c83f55e6a Auto-Submitted: auto-generated The branch stable/14 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=9f5457996e005e12db7737bddaada55c83f55e6a commit 9f5457996e005e12db7737bddaada55c83f55e6a Author: Rick Macklem AuthorDate: 2025-02-17 00:01:54 +0000 Commit: Rick Macklem CommitDate: 2025-03-03 01:54:10 +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. (cherry picked from commit f5aff1871d3273b3cd3621ea5d3e37cdd807e66f) --- 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 e803c2cfb973..ad30a306c31d 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, @@ -463,7 +461,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 @@ -923,6 +921,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, @@ -1755,10 +1755,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--; } /* @@ -2868,7 +2868,7 @@ tryagain: nfsdl_list); LIST_REMOVE(dp, nfsdl_hash); TAILQ_INSERT_HEAD(&dh, dp, nfsdl_list); - nfscl_delegcnt--; + clp->nfsc_delegcnt--; nfsstatsv1.cldelegates--; } NFSLOCKCLSTATE(); @@ -2898,7 +2898,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 && @@ -2925,7 +2926,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--; } }