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
This commit is contained in:
Bryan Drewery 2014-02-02 14:11:34 +00:00
parent 51eecdc35a
commit e3b7979645
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=261401

View File

@ -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));
}
/*