Bug 150877

Summary: ambiguity in newsyslog(8) man page about zfs with compression on
Product: Documentation Reporter: Joshua Isom <jrisom>
Component: Books & ArticlesAssignee: Bryan Drewery <bdrewery>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description Joshua Isom 2010-09-23 09:30:01 UTC
The man page for newsyslog only states that it checks file size and not
disk usage for whether or not to move a log file.  When newsyslog runs
it looks at the number of blocks used and not the file size.  Given that
the intent could be different for different sysadmins, I am not sure if
it would be a software bug or a documentation error.

Fix: 

It's either a coding error and documentation ambiguity.
How-To-Repeat: Use zfs for /var/log with compression enabled, run ls -lh and see file
sizes larger than configured in /etc/newsyslog.conf.
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2010-09-26 22:11:18 UTC
Responsible Changed
From-To: freebsd-bugs->freebsd-doc

reclassify.
Comment 2 Bryan Drewery freebsd_committer freebsd_triage 2014-02-01 02:21:19 UTC
Responsible Changed
From-To: freebsd-doc->bdrewery

I am working on actually fixing the code.
Comment 3 dfilter service freebsd_committer freebsd_triage 2014-02-02 14:11:42 UTC
Author: bdrewery
Date: Sun Feb  2 14:11:34 2014
New Revision: 261401
URL: http://svnweb.freebsd.org/changeset/base/261401

Log:
  Fix newsyslog(8) to use the size of the file instead of the blocks it
  takes on disk, as advertised in newsyslog.conf(5).
  
  This fixes newsyslog(8) on ZFS with compression enabled to not have
  large files compared to the expected rotation size.
  
    # grep remotes/messages /etc/newsyslog.conf
    /var/log/remote/messages       root:info       640  5     500  *     JC
    # ls -alh /var/log/remote/messages
    -rw-r-----  1 root  info    3.2M Jan 31 20:02 /var/log/remote/messages
    # newsyslog -vN|grep remote/messages
    /var/log/remote/messages <5J>: size (Kb): 464 [500] --> skipping
    # stat -f "st_size: %z st_blocks: %b" /var/log/remote/messages
    st_size: 3372627 st_blocks: 928
    # zfs get -H compressratio zroot/syslogs
    zroot/syslogs    compressratio   3.77x   -
  
  With fix:
  
    # newsyslog -v | grep remote/messages
    /var/log/remote/messages <5J>: size (Kb): 3338 [500] --> trimming log....
  
  Approved by:	bapt (mentor)
  PR:		docs/150877
  Reported by:	Joshua Isom <jrisom@gmail.com>
  MFC after:	2 weeks

Modified:
  head/usr.sbin/newsyslog/newsyslog.c

Modified: head/usr.sbin/newsyslog/newsyslog.c
==============================================================================
--- head/usr.sbin/newsyslog/newsyslog.c	Sun Feb  2 07:28:04 2014	(r261400)
+++ head/usr.sbin/newsyslog/newsyslog.c	Sun Feb  2 14:11:34 2014	(r261401)
@@ -2284,7 +2284,7 @@ sizefile(const char *file)
 
 	if (stat(file, &sb) < 0)
 		return (-1);
-	return (kbytes(dbtob(sb.st_blocks)));
+	return (kbytes(sb.st_size));
 }
 
 /*
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 4 Bryan Drewery freebsd_committer freebsd_triage 2014-02-02 14:11:47 UTC
State Changed
From-To: open->closed

Fix committed to head