git: 62c5be4ab4c8 - main - nfscl: Add a check for "has acquired a delegation" to nfscl_removedeleg()
Rick Macklem
rmacklem at FreeBSD.org
Mon Sep 27 01:40:38 UTC 2021
The branch main has been updated by rmacklem:
URL: https://cgit.FreeBSD.org/src/commit/?id=62c5be4ab4c8b8127185286e148638cb8cdf45f4
commit 62c5be4ab4c8b8127185286e148638cb8cdf45f4
Author: Rick Macklem <rmacklem at FreeBSD.org>
AuthorDate: 2021-09-27 01:37:25 +0000
Commit: Rick Macklem <rmacklem at FreeBSD.org>
CommitDate: 2021-09-27 01:37:25 +0000
nfscl: Add a check for "has acquired a delegation" to nfscl_removedeleg()
Commit 5e5ca4c8fc53 added a flag to a NFSv4 mount point that is set when
the first delegation is acquired from the NFSv4 server.
For a common case where delegations are not being issued by the
NFSv4 server, the nfscl_removedeleg() code acquires the mutex lock for
open/lock state, finds the delegation list empty, then just unlocks the
mutex and returns. This patch adds a check of the flag to avoid the
need to acquire the mutex for this common case.
This change appears to be performance neutral for a small number
of opens, but should reduce lock contention for a large number of opens
for the common case where server is not issuing delegations.
This commit should not affect the high level semantics of delegation
handling.
MFC after: 2 weeks
---
sys/fs/nfsclient/nfs_clstate.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sys/fs/nfsclient/nfs_clstate.c b/sys/fs/nfsclient/nfs_clstate.c
index 8ec5b80489f9..ddbfa40300d8 100644
--- a/sys/fs/nfsclient/nfs_clstate.c
+++ b/sys/fs/nfsclient/nfs_clstate.c
@@ -4604,6 +4604,12 @@ nfscl_removedeleg(vnode_t vp, NFSPROC_T *p, nfsv4stateid_t *stp)
int igotlock = 0, triedrecall = 0, needsrecall, retcnt = 0, islept;
nmp = VFSTONFS(vp->v_mount);
+ NFSLOCKMNT(nmp);
+ if ((nmp->nm_privflag & NFSMNTP_DELEGISSUED) == 0) {
+ NFSUNLOCKMNT(nmp);
+ return (retcnt);
+ }
+ NFSUNLOCKMNT(nmp);
np = VTONFS(vp);
NFSLOCKCLSTATE();
/*
More information about the dev-commits-src-all
mailing list