svn commit: r247321 - in stable/9: etc/rc.d sys/kern
John Baldwin
jhb at FreeBSD.org
Tue Feb 26 16:55:45 UTC 2013
Author: jhb
Date: Tue Feb 26 16:55:44 2013
New Revision: 247321
URL: http://svnweb.freebsd.org/changeset/base/247321
Log:
MFC 234927:
- Don't log messages saying that accounting is being disabled and enabled
if the accounting log file is atomically replaced with a new file
(such as during log rotation).
- Simplify accounting log rotation a bit. There is no need to re-run
accton(8) after renaming the new log file to it's real name.
PR: kern/167321
Modified:
stable/9/etc/rc.d/accounting
stable/9/sys/kern/kern_acct.c
Directory Properties:
stable/9/etc/ (props changed)
stable/9/sys/ (props changed)
Modified: stable/9/etc/rc.d/accounting
==============================================================================
--- stable/9/etc/rc.d/accounting Tue Feb 26 15:51:46 2013 (r247320)
+++ stable/9/etc/rc.d/accounting Tue Feb 26 16:55:44 2013 (r247321)
@@ -65,9 +65,7 @@ accounting_rotate_log()
mv ${accounting_file} ${accounting_file}.0
if checkyesno accounting_enable; then
- ln $_file ${accounting_file##*/}
- ${accounting_command} ${accounting_file}
- unlink $_file
+ mv $_file ${accounting_file}
fi
}
Modified: stable/9/sys/kern/kern_acct.c
==============================================================================
--- stable/9/sys/kern/kern_acct.c Tue Feb 26 15:51:46 2013 (r247320)
+++ stable/9/sys/kern/kern_acct.c Tue Feb 26 16:55:44 2013 (r247321)
@@ -122,7 +122,7 @@ static uint32_t encode_timeval(struct ti
static uint32_t encode_long(long);
static void acctwatch(void);
static void acct_thread(void *);
-static int acct_disable(struct thread *);
+static int acct_disable(struct thread *, int);
/*
* Accounting vnode pointer, saved vnode pointer, and flags for each.
@@ -196,7 +196,7 @@ int
sys_acct(struct thread *td, struct acct_args *uap)
{
struct nameidata nd;
- int error, flags, vfslocked;
+ int error, flags, vfslocked, replacing;
error = priv_check(td, PRIV_ACCT);
if (error)
@@ -246,6 +246,13 @@ sys_acct(struct thread *td, struct acct_
sx_xlock(&acct_sx);
/*
+ * Don't log spurious disable/enable messages if we are
+ * switching from one accounting file to another due to log
+ * rotation.
+ */
+ replacing = (acct_vp != NULL && uap->path != NULL);
+
+ /*
* If accounting was previously enabled, kill the old space-watcher,
* close the file, and (if no new file was specified, leave). Reset
* the suspended state regardless of whether accounting remains
@@ -254,7 +261,7 @@ sys_acct(struct thread *td, struct acct_
acct_suspended = 0;
if (acct_vp != NULL) {
vfslocked = VFS_LOCK_GIANT(acct_vp->v_mount);
- error = acct_disable(td);
+ error = acct_disable(td, !replacing);
VFS_UNLOCK_GIANT(vfslocked);
}
if (uap->path == NULL) {
@@ -299,7 +306,8 @@ sys_acct(struct thread *td, struct acct_
}
acct_configured = 1;
sx_xunlock(&acct_sx);
- log(LOG_NOTICE, "Accounting enabled\n");
+ if (!replacing)
+ log(LOG_NOTICE, "Accounting enabled\n");
return (error);
}
@@ -308,7 +316,7 @@ sys_acct(struct thread *td, struct acct_
* our reference to the credential, and clearing the vnode's flags.
*/
static int
-acct_disable(struct thread *td)
+acct_disable(struct thread *td, int logging)
{
int error;
@@ -319,7 +327,8 @@ acct_disable(struct thread *td)
acct_vp = NULL;
acct_cred = NULL;
acct_flags = 0;
- log(LOG_NOTICE, "Accounting disabled\n");
+ if (logging)
+ log(LOG_NOTICE, "Accounting disabled\n");
return (error);
}
@@ -574,7 +583,7 @@ acctwatch(void)
*/
vfslocked = VFS_LOCK_GIANT(acct_vp->v_mount);
if (acct_vp->v_type == VBAD) {
- (void) acct_disable(NULL);
+ (void) acct_disable(NULL, 1);
VFS_UNLOCK_GIANT(vfslocked);
acct_state |= ACCT_EXITREQ;
return;
More information about the svn-src-stable-9
mailing list