Author: mjg Date: Mon Apr 23 07:52:10 2018 New Revision: 332879 URL: https://svnweb.freebsd.org/changeset/base/332879
Log: lockf: skip the hard work in lf_purgelocks if possible Tested by: pho Modified: head/sys/kern/kern_lockf.c Modified: head/sys/kern/kern_lockf.c ============================================================================== --- head/sys/kern/kern_lockf.c Mon Apr 23 07:51:19 2018 (r332878) +++ head/sys/kern/kern_lockf.c Mon Apr 23 07:52:10 2018 (r332879) @@ -777,6 +777,12 @@ lf_purgelocks(struct vnode *vp, struct lockf **statep) return; } *statep = NULL; + if (LIST_EMPTY(&state->ls_active) && state->ls_threads == 0) { + KASSERT(LIST_EMPTY(&state->ls_pending), + ("freeing state with pending locks")); + VI_UNLOCK(vp); + goto out_free; + } state->ls_threads++; VI_UNLOCK(vp); @@ -823,6 +829,7 @@ lf_purgelocks(struct vnode *vp, struct lockf **statep) LIST_REMOVE(lock, lf_link); lf_free_lock(lock); } +out_free: sx_xlock(&lf_lock_states_lock); LIST_REMOVE(state, ls_link); sx_xunlock(&lf_lock_states_lock); _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"