cvs-src summary for August 9-16 - special last-minute shopping edition

Mark Johnston mjohnston at
Tue Aug 17 18:29:37 PDT 2004

Here's this week's giant summary.  As you probably know, a code freeze went 
into effect first thing on the 17th, which is the main reason for the length 
of this summary.

In other news, Omer Faruk Sen has kindly arranged to host a mailing list 
exclusively for the summaries, in case you'd like to get them separately from 
your current@ mail.  The address of this list is 
freebsd-cvs-summary at; to subscribe, send mail to 
freebsd-cvs-summary-subscribe at  Thanks, Omer!

FreeBSD cvs-src summary for 09/08/04 to 16/08/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:

You can get old summaries, and an HTML version of this one, at  Please send any comments to Mark Johnston
(mark at

If you would like to get the summary without subscribing to current@,
please send mail to freebsd-cvs-summary-subscribe at
Thanks to Omer Faruk Sen and EnderUNIX for hosting this list.

For Lukasz Dudek and Szymon Roczniak's Polish translations of these
summaries, which may lag the English ones slightly, please see

.. contents::

I reported last week that Nate Lawson (njl) had moved the crypto
distribution into the base system.  This was actually done by Colin
Percival (cperciva).

I also creatively described UMA as standing for "Uniform Memory Access",
when in reality it stands for "Universal Memory Allocator".

Apologies to Colin and Nate, and anyone confused by the UMA mixup.

New features
ADAPTIVE_GIANT turned on by default
Robert Watson (rwatson) enabled ADAPTIVE_GIANT by default in the GENERIC
kernel.  ADAPTIVE_GIANT makes the Giant system mutex adaptive.  That is,
when a thread wants to lock the Giant mutex, but it is already locked by a
thread on another CPU, the first thread will keep running and wait for the
lock to be released.  Normally, the thread would instead go back to sleep
and wait for its next chance to run.  On an SMP system, Robert has noted a
16% improvement on buildworld and a 30% improvement in MySQL performance.

Thanks to Colin Percival (cperciva) for sending me a pointer to this

GEOM support for read-only compressed disks added
Max Khon (fjoe) committed geom_uzip, a GEOM class that implements
read-only compressed disks.  Using geom_uzip, you can natively mount
disks compressed in cloop 2.0 format.  The FreeSBIE_ project supplied
some timings for application startup on their LiveCD, showing drastic
improvements.  Times are in minutes and seconds.

Boot        1:26    1:04
X             41       9
XFce        1:17      18
xterm         13       2
Firefox     3:02      24

.. _FreeSBIE:

GEOM RAID 3 class added
Pawel Jakub Dawidek (pjd) added a GEOM class for RAID 3 and a utility
named graid3 that is used to manage it.  RAID 3 spreads data across a
number of drives, using another drive to store parity data.  In the event
of any one drive failing, the parity drive can be used to recover it.  In
other words, RAID 3 is like RAID 5, but it uses a dedicated drive for
parity data.

Speed enhancements for mmap and pipes
Alan Cox (alc) committed code submitted by Mark W. Krentzel that changes
the VM code to use an O(log n) algorithm instead of the old linear search
when finding space to map memory.  This results in much lower overhead
for applications that mmap many regions.  Dag-Erling Smorgrav (des)
followed up, pointing out that the commit should also greatly increase
pipe performance.

ipfw rules can now be associated with jails
Christian S. J. Peron (csjp) added a "jail" option to ipfw, allowing rules
to be associated with specific jail IDs.  He gives the following example::

    ipfw add count ip from any to any jail 2

GNU sort updated to latest version
Tim Robbins (tjr) updated GNU sort to the latest version from GNU.  The
new version of sort improves the performance of merging large files with
-m, as well as fixing some POSIX conformance issues.  The semantics of
"-o" have changed so that "-o -" means to write to a file named "-", not
standard output; "-k" with a b argument has changed to skip leading blanks
in some cases.  See `Tim's followup`_ for more details.

.. _`Tim's followup`:

Routing table entries using much less memory now
Andre Oppermann (andre) converted the system routing table to use a UMA
zone to store entries.  The effect of this is to reduce the memory used
by about 50%, from 256 bytes plus overhead to 132 bytes per entry.  In
testing, Andre reports he was able to load roughly 1.2 million routes
before running out of space.

Support for new Adaptec architecture and 2130S adapter added
Scott Long (scottl) added support for the Adaptec RAID-On-Chip
architecture, introducing support for the Adaptec 2130S adapter.  Scott
thanks Adaptec for providing hardware for this work.

Support for VIA C3 Nehemiah AES encryption
Mark Murray (markm) committed support for the Via C3 Nehemiah chip's
embedded "Padlock" AES encryption.  This code was imported from the
yet-unreleased OpenSSL 0.9.5.

ACPI locking added
Nate Lawson (njl) added locking to much of the ACPI code, preparing it to
use on SMP without the Giant mutex.


32-bit linux emulation on 64-bit platforms introduced
Tim Robbins (tjr) committed preliminary support for running 32-bit Linux
binaries on the AMD64 platform.  This is enabled with the COMPAT_LINUX32
option.  More work is still required before both 32-bit and 64-bit Linux
emulation can be used at once.

Notable changes
sysinstall changed to instead of XFree86
Ken Smith (kensmith) committed patches from Eric Anholt (anholt) to
change sysinstall from installing XFree86_ to installing the ``_ X
server.  There was a major controversy in February 2004 regarding license
changes in XFree86; `a summary`_ can be found at `Linux Today`_.  FreeBSD
initially switched to in July (see `Eric's HEADSUP`_).

.. _XFree86:
.. _``:
.. _`a summary`:
.. _`Linux Today`:
.. _`Eric's HEADSUP`:

pcic for NEWCARD removed
Warner Losh (imp) removed the pcic driver for NEWCARD, as it was "badly

RANDOM_IP_ID kernel option becomes a sysctl
David Malone (dwmalone) eliminated the RANDOM_IP_ID kernel option, which
randomized the identifier field on IP packets, and added a new sysctl,
net.inet.ip.random_id.  Setting the sysctl to 1 gives the same effect as
setting RANDOM_IP_ID did.  This change is based on similar work done in

Discussion topics
Preserving the user interface on an MFC
Oliver Eikemeier (eik) merged the latest pkg_install tools from -CURRENT
to -STABLE.  As part of this change, he replaced the old Perl version of
pkg_version with the new C version, which no longer supports the -c flag.
In -STABLE, the -c flag outputs commands you could use to update your
packages to the latest versions, although if used as-is, the resulting
commands will destroy dependencies.

Ceri Davies (ceri) followed up, "I don't think that this should have gone
into RELENG_4 [with pkg_version -c not working]."

Alfred Perlstein (alfred) agreed, "We don't break things that used to work
in 4.x unless there is dire need."

Doug Barton (dougb) agreed as well, saying, "This should not have
happened, and I'd like to see it backed out."

Oliver replied to all three, offering, "When anyone from re@ thinks it
is worth the effort, I will add an -c option to the C pkg_version code
ASAP."  He also mentioned, "I believe backing this out won't be beneficial
for -STABLE users, since they'll loose a lot of features (and speed).",
asking, "Has anyone on this thread *ever* used that option?"

Doug replied, "I am happy to let re@ make the decision [ . . . ]." He
also addressed the second part of Oliver's post, saying, "None of these
arguments are relevant, sorry. One of the key principles for a -stable
branch is not violating trust with our users that 'how things work is
how they will always work' without a really good reason.  'It's better,
stronger, faster!' is not a really good reason."

Ken Smith (kensmith), as a member of re@, said, "I would like to see the
-c added please. [ . . . ] Additional features (and speed ;-) are always
welcome/good as long as existing semantics don't change."

Oliver replied, "Ok, I'll write a patch then."

Ken responded, "First thank you, the effort is appreciated. [ . . . ] It
sounds like Oliver is agreeable to adding -c so I'm OK with his previous
commit remaining in RELENG_4 as long as adding -c doesn't take too long."

Bruce Mah (bmah) then followed up, saying "As the original author of
pkg_version (the Perl one), I wish I had never added the -c option.  Of
the users I have talked to who used this option, the majority used it
wrongly (as a package updating script).  In hindsight, this was basically
a foot-shooting device. :-("

Alfred pointed out, "But wouldn't it suck to be that user that actually
does use '-c' correctly, and to have it suddenly gone in the middle of a
'stable' release?"

Will Andrews (will) replied, "It is a broken mis-feature.  Please tell me
how you managed to make it work properly.  Do you have some sort of script
that sorts the output in order by dependency tree?  Or do you actually go
through it every time and sort it by hand? [ . . . ] portupgrade is a much
better tool.  How about simply replacing -c with a message suggesting use
of that instead?"

Ceri answered, "The fact is that the development community have an
agreement with the userbase that we will not do this.  The fact that we
all think that -c is shit doesn't change that."

Network interface flag ambiguities
Maksim Yevmenkin (emax) committed code to set the IFF_RUNNING flag on the
tap network interface as soon as its control device is opened.

Max Laier (mlaier) responded, "IFF_RUNNING has a different meaning (for all
I know) - 'resources allocated' i.e. address(es) assigned. See if_loop.c
for instance."

Brian Feldman (green) replied, "Having written a driver recently, the best
I could find is that IFF_RUNNING essentially means not dead..."

John Polstra (jdp) replied, "That's pretty much correct.  IFF_UP is an
administrative control that expresses the desired state of the interface.
[ . . . ] IFF_RUNNING is the driver's idea of the _actual_ state."  He
clarified, "Neither IFF_UP nor IFF_RUNNING have anything at all to do with
whether any addresses are assigned to the interface."

Roman Kurakin (rik) pointed out, "PPP state machine can remove IFF_UP. For
example if connection is not persistent and link was broken for any

John answered, "I call that a bug."

Roman argued, "This is not a bug, this is feature of protocol. Some times
link should go down (or other state from which it could go up only by
administrator (or program) intervention)."

John disagreed, saying, "PPP should clear IFF_RUNNING in that case, but
should leave IFF_UP untouched."

Roman noted, "But in that case we need some other way to bring line up
again, since we unable just to ifconfig XXX up."  He asked, "Could you
describe why is so bad that some administrative action could be canceled
due to protection or some other reasons by device state machine?"

John answered, "Well, it is standard practice to separate administrative
controls from driver status bits.", pointing out that IEEE standards use
"'adminEnable' and 'operEnable' to reflect the administratively requested
state and the actual state, respectively."

Sam Leffler (sam) responded to John's previous post, clarifying,
"IFF_RUNNING was intended to mark a device "ready for use" and should be
managed by the driver.  IFF_UP was to be administratively controlled and
any automated change is contrary to the original intent/design."

Roman replied, saying, "Ok. Since IFF_UP is used this way by many
implementations we have to agree that this is normal behavior that was
introduced by evolution and practice like word spelling could be changed
from its origin."

Sam responded, "The instances that I am aware of are misdesigns that need

John also replied, saying, "There's a big difference between human
language and software design.  IFF_UP is misused by some implementations
because the implementors didn't understand it.  That's not evolution, it's
just a plain old bug. :-)"

Committer changes
Matt Jacob (mjacob) has returned after a brief absence; he requested his
commit bit be suspended in March.

Other bug fixes
Max Laier (mlaier) imported a fix from OpenBSD for pf.  This fix corrects
a problem that caused incorrect packet checksums when using the "scrub
random-id" option.

Tim Robbins (tjr) fixed a bug in gzip that could result in a crash when
processing certain corrupt input files.  This fix was also MFC'ed.

Martin Blapp (mbr) fixed a bug in the DHCP client that could result in it
neither renewing its old address nor requesting a new one.

Bill Paul (wpaul) fixed the NDISulator to support the Texas Instruments
802.11g chipset, as used in the Netgear WG311v2 wireless PCI card.  The
NDISulator allows the use of Windows network drivers under FreeBSD.  Note
that the firmware, supplied with the driver as .bin files, will need to be
installed in /compat/ndis.

Eric Anholt (anholt) fixed a problem in the AGP code that was resulting in
a spontaneous reboot with VIA AGPv3 chipsets when an AGPv2 card was used.
This closes `PR 69953`_.

.. _`PR 69953`:

Ian Dowse (iedowse) fixed a bug in the driver for the ASIX Electronics
AX88172 USB Ethernet adapter, as used in the D-Link DUBE100, the Linksys
USB200M, the Netgear FA120, and other cards.  The bug was resulting in the
interface breaking down under load.  This closes `PR 70474`_, which also
had the fix from Andrew Thompson.

.. _`PR 70474`:

More information about the freebsd-current mailing list