The branch main has been updated by rmacklem:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=62c5be4ab4c8b8127185286e148638cb8cdf45f4

commit 62c5be4ab4c8b8127185286e148638cb8cdf45f4
Author:     Rick Macklem <rmack...@freebsd.org>
AuthorDate: 2021-09-27 01:37:25 +0000
Commit:     Rick Macklem <rmack...@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();
        /*
_______________________________________________
dev-commits-src-main@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "dev-commits-src-main-unsubscr...@freebsd.org"

Reply via email to