Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Mar 2006 17:01:53 GMT
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 93511 for review
Message-ID:  <200603181701.k2IH1r5x004312@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=93511

Change 93511 by rwatson@rwatson_peppercorn on 2006/03/18 17:01:32

	When pulling the global audit queue's contents into a thread-local
	queue, generate one low water mark transition signal, rather than
	many, and generate it only if actually crossing the transition
	point, rather than every time we notice we're below it.

Affected files ...

.. //depot/projects/trustedbsd/audit3/sys/security/audit/audit.c#21 edit

Differences ...

==== //depot/projects/trustedbsd/audit3/sys/security/audit/audit.c#21 (text+ko) ====

@@ -555,7 +555,7 @@
 	struct ucred *audit_cred;
 	struct thread *audit_td;
 	struct vnode *audit_vp;
-	int error;
+	int error, lowater_signal;
 
 	AUDIT_PRINTF(("audit_worker starting\n"));
 
@@ -607,13 +607,16 @@
 		 * our own clustering, if the lower layers aren't doing it
 		 * automatically enough.
 		 */
+		lowater_signal = 0;
 		while ((ar = TAILQ_FIRST(&audit_q))) {
 			TAILQ_REMOVE(&audit_q, ar, k_q);
 			audit_q_len--;
-			if (audit_q_len <= audit_qctrl.aq_lowater)
-				cv_broadcast(&audit_commit_cv);
+			if (audit_q_len == audit_qctrl.aq_lowater)
+				lowater_signal++;
 			TAILQ_INSERT_TAIL(&ar_worklist, ar, k_q);
 		}
+		if (lowater_signal)
+			cv_broadcast(&audit_commit_cv);
 
 		mtx_unlock(&audit_mtx);
 		while ((ar = TAILQ_FIRST(&ar_worklist))) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200603181701.k2IH1r5x004312>