kern/167321: Implement sysctl to control kernel accounting log messages (e.g. acct(2))

Jeremy Chadwick jdc at koitsu.org
Thu Apr 26 12:00:41 UTC 2012


The following reply was made to PR kern/167321; it has been noted by GNATS.

From: Jeremy Chadwick <jdc at koitsu.org>
To: FreeBSD-gnats-submit at FreeBSD.org, freebsd-bugs at FreeBSD.org
Cc:  
Subject: Re: kern/167321: Implement sysctl to control kernel accounting log
 messages (e.g. acct(2))
Date: Thu, 26 Apr 2012 05:00:08 -0700

 Proposed patch is attached, as well as available at the below URL.
 Please note I HAVE NOT tested this, but it seems simple enough.
 
 http://jdc.koitsu.org/freebsd/167321/
 
 Patch written for RELENG_8, may/may not patch cleanly on others.
 
 -- 
 | Jeremy Chadwick                                   jdc at koitsu.org |
 | UNIX Systems Administrator                http://jdc.koitsu.org/ |
 | Mountain View, CA, US                                            |
 | Making life hard for others since 1977.             PGP 4BD6C0CB |
 
 --- SNIP ---
 
 --- src/sys/kern/kern_acct.c.orig	2009-08-03 01:13:06.000000000 -0700
 +++ src/sys/kern/kern_acct.c	2012-04-26 04:53:31.428339406 -0700
 @@ -146,6 +146,9 @@
  #define	ACCT_RUNNING	1	/* Accounting kthread is running. */
  #define	ACCT_EXITREQ	2	/* Accounting kthread should exit. */
  
 +/* sysctl variable used for controlling non-critical log() calls */
 +static int		 acct_logging = 1;
 +
  /*
   * Values associated with enabling and disabling accounting
   */
 @@ -188,6 +191,9 @@
  SYSCTL_INT(_kern, OID_AUTO, acct_suspended, CTLFLAG_RD, &acct_suspended, 0,
  	"Accounting suspended or not");
  
 +SYSCTL_INT(_kern, OID_AUTO, acct_logging, CTLFLAG_RW, &acct_logging, 0
 +	"Log non-critical accounting messages");
 +
  /*
   * Accounting system call.  Written based on the specification and previous
   * implementation done by Mark Tinguely.
 @@ -299,7 +305,8 @@
  	}
  	acct_configured = 1;
  	sx_xunlock(&acct_sx);
 -	log(LOG_NOTICE, "Accounting enabled\n");
 +	if (acct_logging)
 +		log(LOG_NOTICE, "Accounting enabled\n");
  	return (error);
  }
  
 @@ -319,7 +326,8 @@
  	acct_vp = NULL;
  	acct_cred = NULL;
  	acct_flags = 0;
 -	log(LOG_NOTICE, "Accounting disabled\n");
 +	if (acct_logging)
 +		log(LOG_NOTICE, "Accounting disabled\n");
  	return (error);
  }
  
 @@ -593,13 +601,15 @@
  		if (sb.f_bavail > (int64_t)(acctresume * sb.f_blocks /
  		    100)) {
  			acct_suspended = 0;
 -			log(LOG_NOTICE, "Accounting resumed\n");
 +			if (acct_logging)
 +				log(LOG_NOTICE, "Accounting resumed\n");
  		}
  	} else {
  		if (sb.f_bavail <= (int64_t)(acctsuspend * sb.f_blocks /
  		    100)) {
  			acct_suspended = 1;
 -			log(LOG_NOTICE, "Accounting suspended\n");
 +			if (acct_logging)
 +				log(LOG_NOTICE, "Accounting suspended\n");
  		}
  	}
  }


More information about the freebsd-bugs mailing list