cvs-src summary for June 28 - July 5 (complete)

Mark Johnston mjohnston at skyweb.ca
Tue Jul 6 08:55:24 PDT 2004


Here's the final summary - it did turn out to be a long one.

FreeBSD cvs-src summary for 28/06/04 to 05/07/04
++++++++++++++++++++++++++++++++++++++++++++++++
This is a regular weekly summary of FreeBSD's cutting-edge development.
It is intended to help the FreeBSD community keep up with the fast-paced
work going on in FreeBSD-CURRENT by distilling the deluge of data from
the CVS mailing list into a (hopefully) easy-to-read newsletter.  This
newsletter is marked up in reStructuredText_, so any odd punctuation
that you see is likely intended for the reST parser.

.. _reStructuredText: http://docutils.sourceforge.net/rst.html

You can get old summaries, and an HTML version of this one, at
http://www.xl0.org/FreeBSD/.  Please send any comments to Mark Johnston
(mark at xl0.org).

For Lukasz Dudek and Szymon Roczniak's Polish translations of these
summaries, which may lag the English ones slightly, please see
http://mocart.pinco.pl/FreeBSD/.

.. contents::

======
Errata
======
Brooks Davis (brooks) kindly pointed out an error in `last week's
summary`_.  I reported that the pseudo-interface cloning changes resulted
in stf always being created instead of stf0 or other names; here is the
actual table of results as supplied by Brooks.

.. _`last week's summary`: 
http://excel.xl0.org/FreeBSD/28-06-04.html#pseudo-interface-cloning-overhauled

Command         DEV     Version
ifconfig stf    stf0    old
ifconfig stf0   stf0    old
ifconfig 6to4   <fail>  old

ifconfig stf    stf     new
ifconfig stf0   stf0    new
ifconfig 6to4   6to4    new

Those of you reading this on the current@ list will have already seen the
correction.  Sorry for the confusion.

============
New features
============
Native preemption of kernel threads added
-----------------------------------------
John Baldwin (jhb) added support for native preemption of kernel threads
in the scheduler, replacing various hacks in other parts of the kernel
that did this preemption manually.  As committed, the patch doesn't change
anything, since it is disabled by default, but it will be enabled by
developers for the various architectures as it is tested on them.

http://www.freebsd.org/cgi/mid.cgi?200407022021.i62KLi4Y041825

Significant improvements to pkg_install
---------------------------------------
Oliver Eikemeier (eik) introduced some major enhancements to pkg_install
and the other package management tools, rewriting the version number
parsing code and adding several new flags.  The version number code now
supports version strings like 'alpha', 'beta', and 'pl', and uses the full
version numbers to compare earlier and later versions.  This makes it
possible for a script to detect software with security problems the way
NetBSD's audit-packages does; see `PR 56961`_ for more information.

.. _`PR 56961`: http://www.freebsd.org/cgi/query-pr.cgi?pr=56961

Oliver also merged several other package-related PRs, including 66032_,
56989_, 57016_, 57029_, and 26468_.  These improve handling of corrupt
package databases and add a couple of flags and some bugfixes.

.. _66032: http://www.freebsd.org/cgi/query-pr.cgi?pr=66032
.. _56989: http://www.freebsd.org/cgi/query-pr.cgi?pr=56989
.. _57016: http://www.freebsd.org/cgi/query-pr.cgi?pr=57016
.. _57029: http://www.freebsd.org/cgi/query-pr.cgi?pr=57029
.. _26468: http://www.freebsd.org/cgi/query-pr.cgi?pr=26468

http://www.freebsd.org/cgi/mid.cgi?200406291854.i5TIslGm003131
http://www.freebsd.org/cgi/mid.cgi?200406291856.i5TIuxZQ003361
http://www.freebsd.org/cgi/mid.cgi?200406291859.i5TIxJ20003694

top gains support for I/O display
---------------------------------
Alfred Perlstein (alfred) committed support to top to display the amount
of disk I/O that processes are doing.  You can use this mode by pressing
"m" or by giving the command line option "-m io" to top.

http://www.freebsd.org/cgi/mid.cgi?200407010912.i619Ccw4072380

ALTQ driver modifications introduced
------------------------------------
Max Laier (mlaier) imported the first batch of driver modifications to
support ALTQ, the new network packet queueing and quality-of-service
framework that works with the recently-imported OpenBSD PF.  Updated
drivers are bfe, em, fxp, lnc, tun, de, rl, sis, and xl.  More patches are
pending; you can see the rest at http://people.freebsd.org/~mlaier/.

http://www.freebsd.org/cgi/mid.cgi?200407021216.i62CG2uK024832

ACPI quirk support added
------------------------
Nate Lawson (njl) committed support for a list of ACPI quirks.  A quirk
is a note to the system that a certain piece or type of hardware needs
special handling; for instance, the ACPI quirks can disable ACPI on
hardware that is known not to work properly with it.

http://www.freebsd.org/cgi/mid.cgi?200406300449.i5U4ns3u021379
(This link is only one of many commits, spread out over last week and this.)

Support for FAT32 filesystems bigger than 128 GB added
------------------------------------------------------
Tim J. Robbins (tjr) added basic support to the FAT32 support code that
allows filesystems over 128 GB to be mounted.  This code does not support
exporting these large filesystems over NFS; Tim also gave the caveat that
filesystems with millions of files may exhaust the kernel memory and cause
a panic.  If you plan to use this new option, make sure to read the linked
commit message below for more details.

http://www.freebsd.org/cgi/mid.cgi?200407031322.i62DMdqC084182

Multiple instance (load sharing) support added to natd
------------------------------------------------------
Poul-Henning Kamp (phk) added support to natd for multiple instances.
This allows more than one natd instance to be set up in natd.conf, bound
to different network interfaces, so connections can be sent out of two
different interfaces to implement load sharing.  Poul-Henning has posted
some notes_ on how to get this working.

.. _notes: http://phk.freebsd.dk/misc/natd/notes.natd

http://www.freebsd.org/cgi/mid.cgi?200407041253.i64Crsci043604

Working LQM implementation added to PPP
---------------------------------------
Brian Somers (brian) added working LQM (Link Quality Monitoring, `RFC
1333`_) support to PPP.  LQM helps PPP keep track of the quality of
a running connection.  Brian is `looking for testers`_ for the LQM
implementation, since he is getting weird results with his ISP.  This
commit is a reimplementation of `PR 11293`_.

.. _`RFC 1333`: http://www.rfc-editor.org/rfc/rfc1333.txt
.. _`looking for testers`: 
http://www.freebsd.org/cgi/mid.cgi?20040630133328.071bc07b
.. _`PR 11293`: http://www.freebsd.org/cgi/query-pr.cgi?pr=11293

http://www.freebsd.org/cgi/mid.cgi?200406301224.i5UCOuSc035406

GEOM volume label support added
-------------------------------
Pawel Jakub Dawidek (pjd) added support to GEOM, the disk access
framework, for a class called GEOM_LABEL that detects volume labels on
file systems.  The class currently supports UFS, FAT and FAT32, and the
ISO 9660 CD-ROM file system, as well as a GEOM-native label, configured
with the glabel command.

http://www.freebsd.org/cgi/mid.cgi?200407021940.i62JeajI039598

zlib updated to 1.2.1
---------------------
Tim J. Robbins (tjr) imported zlib, the GNU compression library, version
1.2.1.  1.2.1 replaces the old version 1.1.4, adding many speed and
functionality enhancements.  See `the zlib website`_ for a full list of
changes.

.. _`the zlib website`: http://www.gzip.org/zlib/

http://www.freebsd.org/cgi/mid.cgi?200406302343.i5UNhdaW056583

GNU utility updates
-------------------
Tim J. Robbins (tjr) updated several GNU utilities to their latest
versions.  New versions include GNU sort 5.2.1, the GNU regex library
2.5.1, and GNU grep 2.5.1.  The new utilities are faster and add a
few features, but the main reason for the change is to move closer to
multi-byte character support.

http://www.freebsd.org/cgi/mid.cgi?200407020918.i629IWuY019114

ACPI-CA updated to version 20040527
-----------------------------------
Mark Santcroos (marks) updated ACPI-CA, Intel's ACPI codebase, to
version 20040527.  ACPI-CA updates generally improve support for newer
motherboards and laptops, especially in the area of power control.

http://www.freebsd.org/cgi/mid.cgi?200407020815.i628F5sp016504

Cronyx Tau-PCI adapter support merged to 4.x
--------------------------------------------
Roman Kurakin (rik) MFC'ed support for the Cronyx Tau-PCI E1/E3 adapter.

http://www.freebsd.org/cgi/mid.cgi?200406301658.i5UGwHJX043764

IPFilter 3.4.35 merged to 4.x
-----------------------------
Darren Reed (darrenr) merged the update to IPFilter 3.4.35, mentioned
`last week`_, to -STABLE.

.. _`last week`: 
http://excel.xl0.org/FreeBSD/28-06-04.html#ipfilter-updated-to-3-4-35

CVS upgrade to 1.11.17 merged to 4.x
------------------------------------
Dag-Erling Smorgrav (des) merged the update to CVS 1.11.17, mentioned `a
few weeks ago`_, to -STABLE.  1.11.17 is a security and bugfix release,
although the security fixes were previously applied.

.. _`a few weeks ago`: 
http://excel.xl0.org/FreeBSD/14-06-04.html#cvs-updated-to-1-11-17

http://www.freebsd.org/cgi/mid.cgi?200406291610.i5TGArU8098015

===============
Notable changes
===============
devd turned on by default
-------------------------
M. Warner Losh (imp) switched devd, a daemon that monitors device events,
on by default.  The FreeBSD devd isn't like Linux devd, which creates
and removes /dev entries; FreeBSD's executes programs when a device is
connected or removed, like starting dhclient when a network card is
plugged in.

http://www.freebsd.org/cgi/mid.cgi?200406301558.i5UFwk6K041695

Netgraph converted to use mbuf tags
-----------------------------------
Julian Elischer (julian) converted Netgraph to use mbuf tags instead of
the metadata facility it was using before.  This means that all Netgraph
modules will need to be recompiled.

http://www.freebsd.org/cgi/mid.cgi?200406302251.i5UMpTEa55084

=================
Discussion topics
=================
min() and max() and MIN() and MAX()
-----------------------------------
Andrew Gallatin (gallatin) commited a change to the vm code, fixing the
use of min() that was losing precision.

Andrew followed up to his commit, asking "Why are min() and max() inlines
which operate on ints?  This seems like a real landmine for 64-bit
platforms.."

Brian Fundakowski Feldman (green) further wondered "why is GCC not
generating the correct warnings?"  He suggested "These should really be
MIN()", asking Andrew to change them.

Andrew replied, regarding the GCC warnings, "I wish I knew."  He also
changed the code to MIN().

Brian followed up, saying "GCC not actually type-checking here is
certainly a bug from my viewpoint".

Andrew suggested "-Wconversion would find this", but "its a little bit too
restrictive, as it complains about any mismatch and the compile doesn't
get even one C file done before erroring out."

Bruce Evans (bde) further pointed out that "-Wconversion doesn't do what
you want.  It was intended for discovering portability problems in K&R
code and/or old code that doesn't always have prototypes in scope."

Bruce also replied to Brian's earlier post about MIN(), saying "MIN() and
MAX() should not be used in the kernel", especially since they have been
removed in RELENG_4.  He clarified that -Wconversion "complains about
harmless conversions like promoting 32 bit ints to 64-bit ints."

Andrew asked, "Then what's the correct fix? ulmin()?"

Bruce answered, "Fixing min() to handle all unsigned types is probably
best", also offering some workarounds.

David Schultz (das) replied with his concern that fixing min() means one of:
"
a) slightly pessimizing 32-bit ports with a function on uintmax_t's,
b) using a macro and introducing double-expansion problems, or
c) using GCC extensions
"

Brian disagreed with fixing min(), saying "No, the correct fix is using
MIN() or MAX() that are well-documented to provide the exact side-effects
C programmers know to expect."

Bruce argued "MIN() and MAX() are not documented.  The don't even exist in
the kernel in FreeBSD-[2-4]."

David also replied, saying "the only places where people should be
using min() and max() over MIN() and MAX() is where double expansion is
problematic".  He also reflected, "It really says something about the
limitations of your language when you're allowed to have type independence
or applicative order argument evaluation, but not both."

http://www.freebsd.org/cgi/mid.cgi?200406281915.i5SJFeaV060231

Compiling the system and ports with -O2
---------------------------------------
Dag-Erling Smorgrav (des) made a change to make.conf, correcting a comment
that said that -O2 exposed bugs in ppp to mention libalias instead.

David Schultz (das) replied, saying "I've been compiling most things with
-O2 for a while (to find -O2 bugs, not for speed) and haven't noticed many
problems", except that "-O2 breaks floating-point exceptions in libm".
He suggested that "maybe -O2 should be automatically turned off while
compiling libm (and perhaps libalias as well).  That would make it more
easily justifiable to make -O2 the default at some future point."

Kris Kennaway (kris) responded "I don't think we can ever make it the
default since there's likely to be a lot of software in ports that would
be broken too."

David answered "99% of the ports that "may break" build with -O2 on Linux
(as -O2 is their default).  What is different about us vs. Linux for these
ports?"

Kris replied "We care about not introducing instability into our
packages?", asking "If we have >=2 -O2 bugs in our source tree alone, why
should you think that none of the 11000 ports are affected?"

David responded "Because most everything in the ports collection was
developed on Linux using -O2.  The bugs are in our code, not gcc's -O2."

Mark Linimon (linimon) and Kris both responded "most != all".

Scott Long (scottl) also answered, saying "While 90% of the ports might
be fine under linux with -O2, it just adds too much risk this late in the
game.  Let's revisit it shortly after 5.3."

http://www.freebsd.org/cgi/mid.cgi?200407030941.i639fwt8078389

===================
Important bug fixes
===================
Input validation error in Linux compatibility code
--------------------------------------------------
Colin Percival (cperciva) committed a fix to the Linux compatibility code
to -STABLE, 4.8, 4.9, 4.10, and 5.2.  This bug affected all 4.x and 5.x
versions of FreeBSD, and could result in a panic or a user gaining root
access.  For more information, see `FreeBSD-SA-04:13.linux`_.

.. _`FreeBSD-SA-04:13.linux`: 
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:13.linux.asc

Major man page cleanup
----------------------
Ruslan Ermilov (ru) made many commits this week, cleaning up the
formatting and markup of the man pages.  This should result in more
consistent results from tools like whatis.

(many)

===============
Other bug fixes
===============
Christian S. J. Peron (csjp) fixed a bug in tftpd that caused it to change
its user ID as requested, but not its group ID.

http://www.freebsd.org/cgi/mid.cgi?200406301858.i5UIwJkB047720

Don Lewis (truckman) worked around a problem that was causing "giving up
on N buffers" messages to be displayed at shutdown by heavy disk activity
with softupdates.  The message can also be caused by having Linux ext2
filesystems mounted at shutdown; this fix does not address that problem.

http://www.freebsd.org/cgi/mid.cgi?200407012359.i61NxJLL000360


More information about the freebsd-current mailing list