Author: markj Date: Fri Nov 24 19:02:06 2017 New Revision: 326175 URL: https://svnweb.freebsd.org/changeset/base/326175
Log: Add a missing lockstat:::sx-downgrade probe. We were returning without firing the probe when the lock had no shared waiters. MFC after: 1 week Modified: head/sys/kern/kern_sx.c Modified: head/sys/kern/kern_sx.c ============================================================================== --- head/sys/kern/kern_sx.c Fri Nov 24 19:01:14 2017 (r326174) +++ head/sys/kern/kern_sx.c Fri Nov 24 19:02:06 2017 (r326175) @@ -480,10 +480,8 @@ sx_downgrade_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) x = sx->sx_lock; if (!(x & SX_LOCK_SHARED_WAITERS) && atomic_cmpset_rel_ptr(&sx->sx_lock, x, SX_SHARERS_LOCK(1) | - (x & SX_LOCK_EXCLUSIVE_WAITERS))) { - LOCK_LOG_LOCK("XDOWNGRADE", &sx->lock_object, 0, 0, file, line); - return; - } + (x & SX_LOCK_EXCLUSIVE_WAITERS))) + goto out; /* * Lock the sleep queue so we can read the waiters bits @@ -504,11 +502,12 @@ sx_downgrade_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) 0, SQ_SHARED_QUEUE); sleepq_release(&sx->lock_object); - LOCK_LOG_LOCK("XDOWNGRADE", &sx->lock_object, 0, 0, file, line); - LOCKSTAT_RECORD0(sx__downgrade, sx); - if (wakeup_swapper) kick_proc0(); + +out: + LOCK_LOG_LOCK("XDOWNGRADE", &sx->lock_object, 0, 0, file, line); + LOCKSTAT_RECORD0(sx__downgrade, sx); } void _______________________________________________ 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"